Как я могу отправить объект RoutingContext из вертикали маршрутизации в другую вертику, используя метод vertx.eventBus(). Send()?

Из моей статьи о маршрутизации с URL-адресом маршрута я хочу отправить объект RoutingContext в другую статью. Я полагаю, что мы можем использовать только vertx.eventBus(). Send() для отправки сообщения от маршрутизации вертикула к некоторому другому действию вертикали. Могу ли я отправить объект RoutingContext как сообщение?

В роутер вертикал я делаю vertx.eventBus().<RoutingContext>send("address", routingContext)

а в потребительской вертикалке я занимаюсьvertx.eventBus().<RoutingContext>consumer("address").handler(message -> { RoutingContext routingContext = message.body(); LOGGER.info("routingContext body = "+routingContext.getBodyAsString()); });

но похоже, что сам vertx не может выполнить 'vertx.eventBus().send' Может кто-нибудь сообщить мне, как я могу отправить объект RoutingContext с помощью метода vertx.eventBus(). send?

1 ответ

Если вы хотите отправить объект через Vert.x EventBus, который не является JsonObject или простым Java-объектом, таким как StringНапример, вам нужно реализовать собственный кодек.

Это означает, что в основном описывается, какие части объекта вы хотите перенести.

Вы можете увидеть примеры реализации вашего собственного кодека здесь:

https://github.com/vert-x3/vertx-examples/blob/master/core-examples/src/main/java/io/vertx/example/core/eventbus/messagecodec/util/CustomMessageCodec.java

На мой взгляд, все еще не имеет особого смысла реализовывать его для RoutingContext. Просто перенесите части, которые вам действительно нужны, а не весь объект.

Другие вопросы по тегам