【发布时间】:2011-03-27 05:49:51
【问题描述】:
我有一个 JMS 客户端,它可以在收到消息后通过 ssh 连接到远程系统(并在那里做各种事情 - 与问题无关)。可能会有数百条此类消息在短时间内到达,需要尽快处理。
但是,也有可能某些远程系统在收到消息时不可用,因此应该推迟到稍后(例如 1 小时左右)。最好的解决方案是将消息放回队列并设置一些“延迟”值,这将告诉 JMS 代理不要在一小时内再次尝试传递消息。
什么不正常:在接收线程中休眠并在一个小时后醒来。由于消息消费者池是有限的(例如 8 个可用连接),有 8 个不可访问的系统会不必要地阻塞整个处理,这是不可接受的。
我没有找到这样一个“延迟”值的消息或队列本身的设置,它存在吗?
解决方法是使用第二个队列将消息存储到无法访问的系统,并分别处理这些消息。但这不是一个非常优雅的解决方案,并且需要额外的编程。也许有更好的方法。
【问题讨论】:
标签: jms message-queue openmq