0

要件: 1 つの activemq キューが 1 つのマシン (たとえば、machine1) で実行される必要があります。そのキューには、machine1 と別のマシン (たとえば、machine2) からアクセスする必要があります。また、リスナーは machine1 でのみ実行されます。したがって、machine1 に送信するすべてのメッセージまた、machine2 は machine1 で使用可能なキューに入り、同じマシン (machine1) で使用可能なリスナーによって受信される必要があります。

問題 : machine1 と machine2 に送信したすべてのメッセージがキューに入りますが、リスナーは代替メッセージのみを受信して​​います。 ..

観察: machine1 と machine2 にリスナーがあり、適切に受信しているとします。machine1 のリスナーは 1, 3, 5..... を受け取り、machine2 のリスナーは 2,4,6..... を受け取ります。

4

1 に答える 1

2

ActiveMQ はデフォルトで RoundRobin ディストリビューションを使用しています。説明したように、キューに 2 つのコンシューマー (machine1 と machine2) がある場合、machine1 はメッセージの半分しか受信しません。machine2 にメッセージを処理するプロセスがない場合でも、このホストの ActiveMQ クライアントがメッセージを消費している可能性があります。2 つのクライアントがメッセージを消費できるようにする場合は、キューの代わりにトピックを使用する必要があります。

于 2013-05-16T12:19:34.430 に答える