2011-02-03 9 views
1

分散アプリケーションでは、JMSキューに処理要求をディスパッチしています。私は、複数のノードをそのキューから消費しています(負荷分散)。リクエストを処理するには、かなり大きなチャンクのユーザー固有のデータをメモリにロードする必要があります。そのデータを後続のリクエストに備えてメモリに保持しておく必要があります。したがって、JMSXGroupIdをuser-idとともに使用して、特定のユーザーに対するすべての要求が、すでにデータがキャッシュされているノードによって処理されることを確認しています。コンシューマ全体(ActiveMQ)を強制終了せずにJMSメッセージグループから登録を解除するには

ユーザーがもうアクティブでなくなった後、ノード上のデータをアンロードする必要があります。それと同時に、そのノードが関連するJMSメッセージグループの所有権を放棄したいと思います。

私は、対応する消費者をシャットダウンすることによってグループの所有権を放棄することを知っています。ただし、キャッシュされたデータをアンロードしたグループだけでなく、そのコンシューマーに関連付けられているすべてのグループの所有権を失うことになります。

消費者側で特定のグループの所有権を放棄する方法はありますか?

ブローカーに依存しない方法が望ましいでしょうが、それが唯一の方法であれば、私はActiveMQの特定の解決策に取り組みます。また、どのようにあなたのお気に入りのメッセージブローカーでこれを行うことができるか提案することができます。

答えて

2

消費者を閉じずにすぐにこれを行うことはできません。 Consumer!= connection btw - なぜ、接続ごとに複数のコンシューマーを使用していないのですか?

関連する問題