我使用Spring的消息驱动的POJO框架(DefaultMessageListenerContainer特别是)来监听几个队列和主题.
在一个特别队列的情况下,需要减慢我排空队列的速率,每五分钟一个消息的顺序.消息的实际处理是亚秒操作,但我希望监听器在消息之间闲置一段时间.
我已经创建了一些hack,但它确实是次优的:我所做的是将max concurrency设置为1并Thread.sleep(..)在处理每条消息后添加一个.我想找到一种方法,而不是DefaultMessageListenerContainer在尝试接收之间等待,而不是让处理程序在将要处理消息期间进行等待.
我曾经考虑过是否会有ScheduledExecutor帮助,但我意识到需要在任务生成的地方进行限制.是否有一些方法DefaultMessageListenerContainer可以覆盖以实现我追求的目标?
修改消费者行为的另一种方法是使用 Apache Camel 来延迟该特定队列上的消息。
http://camel.apache.org/delayer.html描述了 Camel Delayer 模式的功能。例如:
<route>
<from uri="jms:YOURQUEUE"/>
<delay>
<constant>1000</constant>
</delay>
<to uri="jms:DELAYEDQUEUE"/>
</route>
Run Code Online (Sandbox Code Playgroud)
然后您将使用 DELAYEDQUEUE,所有消息都会延迟 1 秒。
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |