私は、いくつかのキューやトピックを聞くために、Springのメッセージ駆動型POJOフレームワーク(特にDefaultMessageListenerContainer
)を使用しています。Springがキューから受け取るレートを制御するにはどうしたらいいですか?
特に1つのキューの場合、5分ごとに1つのメッセージのオーダーで、キューを排出する速度を遅くする必要があります。メッセージの実際の処理はサブ秒の操作ですが、リスナーがメッセージの間にある程度の間アイドル状態になるようにしたいと思います。
私はちょっとしたハックを作成しましたが、明らかに準最適です。最大同時処理数を1に設定し、各メッセージの処理後にThread.sleep(..)
を追加することです。私は代わりにメッセージを処理している間にハンドラが待機するようにするのではなく、受信しようとするのを待つためにDefaultMessageListenerContainer
を使用する方法を見つけたいと思います。
ScheduledExecutor
があると思っていましたが、タスクが生成される場所でスロットルを行う必要があることがわかりました。 DefaultMessageListenerContainer
から、後で何を達成するためにオーバーライドできる方法がありますか?
私が間違っていない限り、私はあなたが 'receiveTimout'を参照していると思います。このプロパティは、 'MessageConsumer'を破棄する前に指定された時間キューから受信を試みます。 – Ray
ああ、そうだよ、私はreceiveTimeoutについてだった( – ruslan
あなたが正しい場合は、あなたの答えを編集する必要があります。 – Gray