How can I control the rate at which Spring receives from a queue?(如何控制Spring从队列接收的速率?)
问题描述
我正在使用Spring的消息驱动POJO框架(特别是DefaultMessageListenerContainer
)来侦听几个队列和主题。
对于一个特定的队列,需要减慢我排出队列的速度,大约是每五分钟一条消息。消息的实际处理是次秒级操作,但我希望侦听器在消息之间空闲一段时间。
我创建了一些黑客攻击,但它显然不是最优的:我所做的是将最大并发设置为1,并在处理每条消息之后添加Thread.sleep(..)
。我希望找到一种方法,在两次尝试接收之间使用DefaultMessageListenerContainer
进行等待,而不是让处理程序在想要处理消息的过程中进行等待。
我曾考虑过是否有ScheduledExecutor
会有帮助,但我意识到需要在产生任务的地方进行限制。是否有来自DefaultMessageListenerContainer
的方法可以重写以完成我想要的内容?
推荐答案
根据队列的提供商,您可以为使用其队列的使用者设置最大速率。
例如,在hornetQ中,您在连接工厂中使用Consumer-max-rate设置此设置。
这篇关于如何控制Spring从队列接收的速率?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何控制Spring从队列接收的速率?


- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 获取数字的最后一位 2022-01-01
- 转换 ldap 日期 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01