0
我發送一條消息給一個verticle,然後可能需要將它轉發給其他verticle。我不想編寫冗餘代碼來複制消息中的標題並創建另一個消息對象並將其傳遞。有沒有辦法轉發消息在vert.x與deliveryOptions完好?Vertx:如何使用deliveryoptions將郵件從一個垂直轉發到另一個垂直?
我發送一條消息給一個verticle,然後可能需要將它轉發給其他verticle。我不想編寫冗餘代碼來複制消息中的標題並創建另一個消息對象並將其傳遞。有沒有辦法轉發消息在vert.x與deliveryOptions完好?Vertx:如何使用deliveryoptions將郵件從一個垂直轉發到另一個垂直?
使用DeliveryOptions您可以在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();
}
}
我希望這會幫助你:)
謝謝您的回答。我仍然不明白這將如何幫助我完成轉發帶有標題的消息。 –
你可以使用'message.headers()'從響應主體中檢索一個頭文件並按需要使用它。 – Flash
是的,我可以做到這一點。實際上,我想轉發郵件,而不是像轉發問題中提到的那樣,在轉發的每個點都複製所有郵件頭和其他元信息。 –