あなたが説明しているのはリターンアドレスのパターンだと思います - https://camel.apache.org/return-address.html
ここのjunitテストケースにいくつかのサンプルコードがあります - http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/ JmsInOnlyWithReplyToAsHeaderTest.java?view=マークアップ
編集:上記のリンクからいくつかのサンプルコードを追加して、よりよく説明します:
from("direct:start")
したがって、以下で定義された次のエンドポイントがあると
from("activemq:queue:foo")
し
ましょう。
from("activemq:queue:bar?disableReplyTo=true")
実際のテストでは、このコードを次のように呼び出します。
template.sendBodyAndHeader("direct:start", "World", "JMSReplyTo", "queue:bar");
direct:start
これにより、「World」を含む本文とJMSReplyTo
値「queue:bar」で呼び出されるヘッダーを含むメッセージがエンドポイントに送信されます。このJMSReplyTo
ヘッダーを指定したため、ルートが終了すると、ヘッダー値で定義されているエンドポイントが呼び出されます。この場合、「queue:bar」エンドポイントが呼び出されます。
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start")
// must enable preserveMessageQos to force Camel to use the JMSReplyTo header
.to("activemq:queue:foo?preserveMessageQos=true")
.to("mock:done");
from("activemq:queue:foo")
.to("log:foo?showAll=true", "mock:foo")
.transform(body().prepend("Bye "));
// we should disable reply to to avoid sending the message back to our self
// after we have consumed it
from("activemq:queue:bar?disableReplyTo=true")
.to("log:bar?showAll=true", "mock:bar");
}
};
}
では、これはあなたのユースケースにどのように適合しますか? さて、何が起こるかはクライアントです。または、作成したコードによってJMSReplyTo
、応答の送信方法に関連するエンドポイントを含むヘッダーが指定されます。したがって、応答をキューに配置する場合、JMSReplyTo
ヘッダーの値は指定されたキューのエンドポイントになります。