質問

私の設定は、JMS加入者のリスナーを下記のとおり"を達成するという目標を掲げて、プールの5つのスレッドを聴topATopicしかし、私は実行時には複数の消費者に処理を同じレコード(recordCount*#消費者).

んとやっても間違いを考慮しい新します。

<bean id="messageListener" class="com.abc.app.mdp.Receiver">
<property name="bean" ref="bean" />
</bean>

<jms:listener-container container-type="default"
connection-factory="connectionFactory" acknowledge="auto" concurrency="5" destination-type="topic" prefetch="1" cache="none" >
<jms:listener destination="topCli_Service" ref="messageListener" 
method="onMessage" subscription="AProjectSubscriber" />
</jms:listener-container>

<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryB ean">
<property name="jndiName" value="jms/jms-top-notx" />
</bean>

きんせい方向に私達成を目標としていますか。

役に立ちましたか?

解決

並行処理 の設定をリスナーのコンテナを設定します。の 春JMS doc この並行処理を設定する1つのネットリスナー.下記を参照してください。

並行処理:数の同時セッション/消費者を開始する各リスナー.は簡単な数の最大数(例えば"5")または範囲を示す低下の上限など"3-5").また、特定の最低基準はただのヒントが無視されます。デフォルトは1であり く並行処理1の場合は話題のリスナー た場合のキューの順序が重要であり、引き上げで一般ます.

このポスト 類似の残りのご質問です。

が必要な場合は複数のスレッドにメッセージ量のメッセージのリスナー委泉 TaskExecutor の処理の非同期メッセージ.TaskExecutorsバックアップを取ることがで多数の実装を含むスレッドプールがあります。

他のヒント

したい場合は指定のメッセージを消費されることを一つだけ消費者のものを使用できるキューの代わりに話題です。トピックのメッセージが放映されるので利用可能なすべての消費者です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top