我不明白如何在使用 JMS 主题时处理错误消息。我有一个有 4 个订阅者的持久 JMS 主题。我向主题发送消息。 3 个订阅者成功消费消息,1 个失败。经过几次重试后,消息将被放入死信队列 (DLQ)。
问题是,如何从那里继续。
如何找出失败的订阅者?
如何才能仅将消息重新传送给该订阅者?我不能再次将其放入主题中,因为那时所有订阅者都会收到它。
是否有一些最佳实践来处理这种情况?
如果这很重要,我将 Glassfish 3.1.2 与 openMQ 一起使用。我更愿意使用不特定于消息传递提供程序实现的解决方案。
预先感谢您的回答。 干杯 阿恩
最佳答案
嗯,我对 openmq 不太熟悉,但是很多 jms 提供者都能够将消息从主题转发到队列。因此,消息生产者将消息发送到主题,然后 jms 提供者将消息的单独副本转发到每个消费者的单独队列。每个消费者都有自己的 DLQ。
有以下好处:
- 为每个队列使用者提供有保证的 SLA(例如,缓慢的使用者可能会减慢其他使用者的速度,如果使用单独的队列则情况并非如此)。
- 消费者不会丢失消息(具有持久订阅的主题将仅在您首次订阅该主题后传送消息)。
- 一些集群问题可以轻松解决(集群环境中主题的订阅者 (MDB) 通常接收消息的次数与集群中节点的数量相同)
关于java - JMS:如何将DLQ中的消息重新传递给主题订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843382/