Camel ルートとその 2 つのエンドポイント (Direct と Seda) について少し混乱しています。さて、私はこのようなルートを持っているとしましょう:
public void configure()
{
from("direct:services")
.process(//Some processing here)
.to("http://ThirdPartyServers")
}
これに加えて、いくつかのリクエストを受信し、いくつかの処理を行ってから、メッセージをこのルートに渡してサードパーティのサーバーから応答を取得する残りの Web サービスがあります。次のように、Spring フレームワークを介してキャメル コンテキストをインスタンス化しました。
<camelContext id="appCamelContext" xmlns="http://camel.apache.org/schema/spring"
trace="true" streamCache="true">
<propertyPlaceholder id="properties"
location="classpath:camel.properties" />
<camel:routeBuilder ref="oneRouteBuilder" />
<camel:routeBuilder ref="photosRouteBuilder" />
</camelContext>
問題は、このルートに複数の異なるメッセージを瞬時に送信することです。現在、Camel のドキュメントには、直接コンポーネントがシングル スレッドで呼び出され、同期的であると記載されています。すべてのメッセージが同時に処理されるのでしょうか、それとも 1 つずつ処理されるのでしょうか?
また、直接コンポーネントをセダに変更すると、違いはありますか?
ティア
更新 [Petter の回答後] : Petter の回答は明確になりましたが、同じ Direct および Seda コンポーネントに関して新たな疑問があります。私のルートが次のようになったとしましょう:
public void configure(){
from("direct:services")
.choice()
.when("some predicate here-Predicate1")
.to("seda:predicate1")
.otherwise()
.to("seda:fallback")
.end();
from("seda:predicate1")
.process("some processing")
.to("http://ThirdPartyServers");
from("seda:fallback")
.process("some processing")
.to("jms:fallbackqueue");
}
ここで、異なるスレッドからダイレクト コンポーネントに 5 つのメッセージを送信すると、これらのメッセージは同時に処理されます。上記のルートでわかるように、直接コンポーネントはメッセージを seda コンポーネントに送信します。それでは、異なる 5 つのメッセージすべてを処理する seda コンポーネントのスレッドは 1 つだけになるのでしょうか? 最後に、すべてのメッセージが 1 つずつ処理されることを意味しますか?