我正在研究一种消息队列解决方案,其中一些消息需要立即传递,而其他消息需要在指定时间传递。延迟时间从几小时到一两周不等。我可以访问 JMS 消息队列,但我怀疑将消息放入具有长延迟的队列是否是一个好主意。
延迟消息是常见做法吗?
使用 QueueBrowser 查看消息并在正确的时间挑选消息是否是一个可行的解决方案(假设消息是其中的传递日期)?
是否有其他解决方案(除了将带有时间戳的消息放入数据库之外)并定期查询数据库?
JMS 2.0支持消息延迟;请参阅规范第 7.9 节:您可以调用setDeliveryDelay并指定JMSProducer您希望消息延迟的毫秒数。(请注意,尽管令人困惑,但您不能在Message 对象上使用该setJMSDeliveryTime方法。)在 JMS 1.1 中,某些 JMS 实现支持专有标头以达到相同的效果。
这是一种很常见的做法,但在实际使用中,当延迟较长时,它有一个主要缺点:没有(标准化)方法来访问延迟的消息:QueueBrowser直到时间到来才返回它们。如果您需要更多控制,最好轮询数据库。
| 归档时间: |
|
| 查看次数: |
2647 次 |
| 最近记录: |