5

残りのサービスがある場合、各リクエストが個別のスレッドによって処理され、スレッドが並行して実行できることが確実にわかります。

春の統合で受信チャネルとして rest(http) サービスがあるとどうなりますか。各リクエストは引き続き並行して処理されますか、それともリクエストはキューに入れられますか...シングルスレッドのようになります

4

2 に答える 2

4

通常のチャネル (DirectChannel) は、チャネルに何かを入れるオブジェクトと同じ実行スレッドを使用するため (基本的にはメソッド呼び出しを抽象化する方法です)、マルチスレッド化されています。

ドキュメントから:

最も単純なポイント ツー ポイント チャネル オプションであることに加えて、最も重要な機能の 1 つは、単一のスレッドがチャネルの「両側」で操作を実行できるようにすることです。たとえば、ハンドラーが DirectChannel にサブスクライブされている場合、メッセージをそのチャネルに送信すると、 send() メソッドの呼び出しが戻る前に、送信者のスレッドでそのハンドラーの handleMessage(Message) メソッドの呼び出しが直接トリガーされます。


編集

あなたの質問には非常に良い点があります。チャネルに Queue 要素を設定すると、Spring は自動的にそれを QueueChannel に変換します (ドキュメント)。私が覚えている限り、一度にキューから消費できるスレッドは 1 つだけです。「実際の」キュー セマンティクス (複数のプロデューサー スレッドとコンシューマー スレッド) が必要な場合は、ExecutorChannel を使用できます。

于 2013-07-26T07:20:02.893 に答える