首页 > 解决方案 > 如何使用 vertx.eventBus().send() 方法将 RoutingContext 对象从路由顶点发送到其他顶点?

问题描述

从具有路由 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' 谁能告诉我如何使用 vertx.eventBus().send 方法发送 RoutingContext 对象?

标签: vert.xvertx-eventbus

解决方案


例如,如果您想通过 Vert.x EventBus 发送一个不是 JsonObject 或普通 Java 对象(如 a 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 实现它仍然没有多大意义。只需转移您实际需要的部分,而不是整个对象。


推荐阅读