2012-04-03 3 views
2

春メッセージ・リスナーコンテナドキュメントは言う:永続サブスクリプションの消費者は、同時に1つのメッセージ以上を消費することができませんか?

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/listener/AbstractMessageListenerContainer.html#setDurableSubscriptionName%28java.lang.String%29

耐久性のあるサブスクリプション名がこのクライアントの JMSクライアントID内で一意である必要があります。デフォルトは、指定されたメッセージ リスナのクラス名です。注意:(このメッセージリスナコンテナ のデフォルト)のみ1同時消費者は、それぞれの耐久性 サブスクリプションのために許可されています。

私たちは、同時に並行メッセージを処理することができ、と思いました。何か不足していますか?

答えて

1

はい、ドキュメントが正しいです。どの時点でも、恒久サブスクリプションのメッセージを受信するコンシューマは1人だけです。すべての永続サブスクリプションは一意のIDで識別されます。あるコンシューマが既にIDを使用してメッセージを受信して​​いる場合、その永続サブスクリプションに対して同じIDを持つコンシューマを作成しようとすると、失敗します。

+0

あなたは耐久性のあるキューに対して複数の同時消費者をスピンアップすることができるようにしたい場合は推奨される解決策は何ですか?適切な選択肢は何ですか? – BennyMcBenBen

+1

各消費者のための個別の接続を作成し、独自のクライアントIDを設定します。これにより、同じトピックのコンカレントコンシューマを作成できます。 – Shashi

+0

@BennyMcBenBen:「耐久性のあるキュー」?キューは常に耐久性があるので、あなたは "耐久性のあるトピック"を意味すると思います。あなたの問題の提案は、トピックの1つの消費者にメッセージを引き出し、それをコンシューマコンシューマのキューに入れることです。この方法は、サブスクリプションの耐久性(トピックに関する)と同時処理の両方を実現します。 – brainOverflow

関連する問題