1

我不明白在使用 JMS 主题时如何处理错误消息。我有一个有 4 个订阅者的持久 JMS 主题。我向主题发送消息。3 个订阅者成功消费消息,1 个失败。经过一些重试后,消息被放入死信队列 (DLQ)。

问题是,如何从那里继续。

  1. 如何找出失败的订阅者?

  2. 如何仅将消息重新传递给该订阅者?我不能再把它放到主题中,因为那时所有订阅者都会得到它。

是否有一些最佳实践来处理这种情况?

如果这很重要,我将 Glassfish 3.1.2 与 openMQ 一起使用。我更喜欢使用不特定于消息传递提供程序实现的解决方案。

提前感谢您的回答。干杯阿恩

4

1 回答 1

1

好吧,我对 openmq 不是很熟悉,但是很多 jms 提供者都具有将消息从主题转发到队列的能力。因此消息生产者将消息发送到主题,然后 jms 提供者将消息的单独副本转发到每个消费者的单独队列。每个消费者都有自己的DLQ。

有以下好处:

  1. 保证每个队列消费者的 SLA(例如,缓慢的消费者可能会减慢其他消费者的速度,以防单独的队列不是这样)。
  2. 没有消费者会丢失消息(具有持久订阅的主题将仅在您首次订阅该主题后传递消息)。
  3. 集群的一些问题可以很容易地解决(集群环境中主题的订阅者(MDB)通常会收到与集群中节点数量一样多的消息)
于 2012-10-11T16:51:18.887 回答