Vertx:如何使用传递选项将消息从一个 Verticle 转发到另一个 Verticle?

Vertx: How to forward messages from one verticle to another with deliveryoptions?

我向一个 Verticle 发送消息,该 Verticle 可能需要将其转发给其他 Verticle。我不想编写冗余代码来从消息中复制 headers 并创建另一条消息 object 并传递它。有没有办法在 deliveryOptions 不变的情况下转发 vert.x 中的消息?

Using DeliveryOptions you can transfer messages in between Verticles.

考虑以下示例:

// MainVerticle 将接收数据,我们将发送到 MessagingVerticle

 public class MainVerticle extends AbstractVerticle {

 @Override
 public void start(Future<Void> fut) {
  //your logic goes here for message object to pass
   MessageConsumer<Object> mc = vertx.eventBus().consumer("your_addressToServer").handler(message -> {

   Object message =  message.body(); 

    final DeliveryOptions options = new DeliveryOptions().setCodecName("any_messaging_address_name");
    vertx.eventBus().send("any_messaging_address_name", Object(message object to pass) , options);

   });

 }

}

// 将这些消息发送到 MessagingVerticle

public class MessagingVerticle   extends AbstractVerticle {

@Override
public void start(Future<Void> fut) {
    vertx.eventBus().<Object>consumer("any_messaging_address_name",
            message -> {
                Object messageCommand = message.body(); // received object from MainVerticle                
            });
    fut.complete();
  }

}

I hope this will help you :)

你想要的不太可能,但如果你只对headers感兴趣,转发还是很简单的。您可以在一个方法调用中设置 headers。但是,您不能通过将整个消息传递给发送方法来转发整个消息 object。

这对我有用。

vertx.eventBus().send("forwardingAddress",
                    message.body(),new DeliveryOptions()
                        .setHeaders(message.headers()));