2017-08-24 3 views
0

1つのverticleにメッセージを送信します。もう1つのverticleは他のverticleに転送する必要があります。メッセージからヘッダーをコピーし、別のメッセージオブジェクトを作成して渡すための冗長なコードを書く必要はありません。 deliveryOptionsをそのまま使用してvert.xでメッセージを転送する方法はありますか?Vertx:deliveryoptionsを使用して1つのverticleから別のverticleへメッセージを転送するにはどうすればよいですか?

答えて

0

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(); 
    } 

} 

私はこれがあなたを助けることを願っています:)

+0

あなたの答えをありがとう。私はこれがヘッダーがそのままの状態でメッセージを転送するのにどのように役立つのか、まだ分かりません。 –

+0

'message.headers()'を使ってレスポンスボディからヘッダを取得し、それを必要に応じて使用することができます。 – Flash

+0

はい、私はそれをすることができます。実際には、私が質問したように、転送の各ポイントですべてのヘッダーやその他のメタ情報をコピーせずにメッセージを転送したいと思う。 –

関連する問題