本文介紹了如何控制Spring從隊列接收的速率?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Spring的消息驅動POJO框架(特別是DefaultMessageListenerContainer
)來偵聽幾個隊列和主題。
對于一個特定的隊列,需要減慢我排出隊列的速度,大約是每五分鐘一條消息。消息的實際處理是次秒級操作,但我希望偵聽器在消息之間空閑一段時間。
我創建了一些黑客攻擊,但它顯然不是最優的:我所做的是將最大并發設置為1,并在處理每條消息之后添加Thread.sleep(..)
。我希望找到一種方法,在兩次嘗試接收之間使用DefaultMessageListenerContainer
進行等待,而不是讓處理程序在想要處理消息的過程中進行等待。
我曾考慮過是否有ScheduledExecutor
會有幫助,但我意識到需要在產生任務的地方進行限制。是否有來自DefaultMessageListenerContainer
的方法可以重寫以完成我想要的內容?
推薦答案
根據隊列的提供商,您可以為使用其隊列的使用者設置最大速率。
例如,在hornetQ中,您在連接工廠中使用Consumer-max-rate設置此設置。
這篇關于如何控制Spring從隊列接收的速率?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,