1

スレッドからキューにJavaオブジェクトを送信します。関連するMDBのonMessageは、キューからのメッセージで呼び出されます。onMessage、メッセージに存在するキーをキャッシュ内のキーと照合します。キーが存在しない場合は、コンテナーにこのメッセージを再配信させるためだけにカスタムruntimeexceptionをスローします。(外部システムの応答からキャッシュにキーを追加する別の自律システムがあります。3〜5秒遅くなる可能性があります)このような場合、このコンテナーはこの未処理のメッセージをキューの最後に追加しますか、それともすぐに再配信されましたか?再配達時間を遅らせる方法はありますか?キューが常に毎秒最大550のメッセージで満たされていると仮定します。

よろしく

4

1 に答える 1

0

現在、HornetQには再配信遅延機能がありますが、後続のすべてのメッセージは正常に配信されます。

再配信が発生した場合にキューをしばらく保持するための機能リクエストがありますが、それはまだ実装されていません。

ただし、キューに複数のコンシューマーがある場合、注文はとにかくコンシューマーに分散されます。deliveryCount> 1の場合は、メッセージグループ化を使用して、onMessageにスリープを追加できます。メッセージグループ化は、他のコンシューマー(または別のMDBインスタンス)がメッセージを順不同で受信しないことを保証するためのものです。

アプリケーションの実行方法や要件によっては、MDBのインスタンスを1つだけ許可したい場合があります。

また、複数のコンシューマーまたは複数のmdbインスタンスがある場合に、より適切な動作をする、クライアントでバッファーなしを選択できるconsumer-window-sizeを確認してください。

于 2012-10-23T21:30:53.380 に答える