MDB 消息消费者延迟

Posted

技术标签:

【中文标题】MDB 消息消费者延迟【英文标题】:MDB Message consumer delay 【发布时间】:2012-01-28 11:08:45 【问题描述】:

hornetq 中是否有任何选项可以设置消息消费者延迟。如果是这样,请举个例子。 我们的要求:我们需要 MDB 以恒定的 2 分钟延迟读取消息。

【问题讨论】:

【参考方案1】:

我认为这不是 MDB 的常见用例。您确定需要 MBD 吗?您是否考虑过主题队列?

或者您能否描述需要延迟的业务原因?

【讨论】:

我们需要它来进行EDI处理,当EDI请求进来时,与该edi相关的消息应该在2分钟后处理并发送。【参考方案2】:

好的 - 那么我认为你应该得到消息,使用一个

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/DelayQueue.html

并将其与 Quartz 之类的调度程序服务或 EJB3.1 中的新计时器一起使用。

最好, 安德斯

【讨论】:

【参考方案3】:

一种选择是放置一个 JMS 标头,该标头具有您想要处理消息的时间。例如,从您创建消息开始 2 分钟。然后,您的阅读器可以有一个基于时间的选择器,该选择器仅选择该标题>当前时间的消息。

【讨论】:

以上是关于MDB 消息消费者延迟的主要内容,如果未能解决你的问题,请参考以下文章

EJB系列 - 消息与MDB

如何让我的 MDB 忽略来自自身的消息?

消息队列介绍

RocketMQ使用延迟消息

RocketMQ使用延迟消息

消息队列 - 死信、延迟、重试队列