Продолжая то, что я знаю, я думаю, это зависит от того, что делает объекты "дорогими".
если дороговизну можно отнести к ресурсам, необходимым для вычисления его внутренних значений, то встроенный в EventBus
обмен сообщениями запрос-ответ может подойти
(... при условии, чтообъект не просто огромный и / или глубоко вложенный)
на стороне отправителя Verticle
:
- захватите дорогой объект из пула и скомпонуйте с ним
Message
- вызовет вариант
EventBus.send()
, который принимает Handler
для обработки ответов - в обработчике ответов, возвращает объект в пул
на получателеVerticle
side:
- зарегистрировать новый
MessageConsumer
с помощью EventBus
для получения сообщений от отправителя - при получении нового
Message
, обработать дорогой объект,и затем вызовите некоторый вариант Message.reply()
, чтобы сигнализировать, что работа на стороне получателя завершена
, если дороговизну можно отнести к размеру / сложности объекта, тогда общие данные могут бытьлучшая альтернатива (де) сериализацииза EventBus
, если вы не знакомы с функцией общих карт, вы можете прочитать в документах .
, идущий по этому маршруту, будет идентичен описанному выше подходу со следующими исключениями:
- вместо сериализации дорогого объекта, сохраните его в общей карте
- sendсоответствующий ключ, в котором объект хранится у получателя
Verticle
Я не уверен, есть ли более готовое к работе идиоматическое решение вашей проблемы, но если ничего другого, я надеюсь, что это вдохновляетнемного нового мышления.