1

jmstemplate receive() メソッドはどのように同期されますか? 送信者はブローカーにメッセージを送信し、反対側のコンシューマーはブローカー キューまたはトピックからメッセージを消費します。受信の場合、ブローカでデータを待機しているポーリング スレッドになります。同期はどのように維持されますか?

4

1 に答える 1

3

JmsTemplateは舞台裏で JMS API を使用し、特にMessageConsumer. Messageそのサービスは、待機せずに を受信しようとするか( receiveNoWait)、構成可能な時間待機することができます ( receive(long timeout))。タイムアウト 0 で呼び出されている場合、メッセージが到着するまで receive メソッドはブロックされます。これらすべてを処理するものは何もありませんJmsTemplate(つまり、クライアント ブローカの実装によって提供されます)。

メッセージを受信するより一般的な方法は、リスナー コンテナーを使用することです。Spring では、DefaultMessageListenerContainerスレッド ポーリングを使用して着信メッセージを処理できます。詳細については、Spring フレームワークの jms ドキュメントを確認してください。

于 2014-04-09T11:13:59.260 に答える