ヘッダーに値を設定して、それがどのサービスであるかを示し、これをキャメル ルートで送信します。このアプローチは、これを行うための 1 つの方法にすぎません。Christian Schneider は別の優れたソリューションを提供しており、これまで以上に Camel に慣れてきたので、おそらくもっと多く使用することになるでしょう。ただし、どちらも同じことを達成し、誰に尋ねるかによって、一方が他方よりも明確になる場合があります。
たとえば、次のことができます。
public void foo(Exchange exchange){
exchange.getIn().setHeader("MsgType", "Student");
}
次に、Java DSL または spring DSL のいずれかでヘッダーをフィルタリングできます。
Java DSL では、次のようなことを行います (疑似コード)
from("foo:incommingroute")
.choice()
.when(header("MsgType").equals("Student"))
.to("webservice:Student")
.when(header("MsgType").equals("Employee"))
.to("webservice:Employee")
.otherwise()
.to("jms:Deadletter")
.end();
Spring DSL では、次のようなことを行います (疑似コード)
<route>
<from uri="foo:incommingroute"/>
<choice>
<when>
<simple>${header.MsgType} equals 'Student'</simple>
<to uri="webservice:Student"/>
</when>
<when>
<simple>${header.MsgType} equals 'Employee'</simple>
<to uri="webservice:Employee"/>
</when>
<otherwise>
<to uri="jms:badOrders"/>
<stop/>
</otherwise>
</choice>
<to uri="jms:Deadletter"/>
</route>
このリンクhttp://camel.apache.org/content-enricher.htmlでエンリッチャー パターンを確認することもできます。基本的に私が提案しているのは、エンリッチャー パターンに従うことです。どのように Camel にメッセージを送信しているか教えていただければ、もっとお役に立てるかもしれません。
これがあなたにいくつかのアイデアを与えることを願っています.コードに構文ミスなどがある場合は申し訳ありませんが、私はバス停にいて、それをチェックする時間がありませんでした.