Websphere MQ:谁应该管理退出队列

时间:2015-09-02 12:18:32

标签: java ibm-mq backout

我们说我的配置细节是:

  • 1将消息发布到MQ主题的PubSub。
  • 2个不同的消费者应用程序。
  • 每个消费者1个主题订阅。
  • 每个订阅1个队列。
  • 最后每个队列有1个退出队列。

谁应该管理撤销队列内容并确定应该重新发布的内容?

2 个答案:

答案 0 :(得分:0)

首先需要注意的是:为什么消息首先在后退队列中结束?

1)是否正在退出消息的JMS客户端,因为消息的格式不正确?

2)消费者应用程序是否因应用程序中的错误而回滚消息?

如果问题是上面的#1,您需要查看生产者应用程序并确定消息格式无效的原因。如果它是#2,那么你需要查看你的应用程序逻辑。

最后,您需要一个查看后退队列的应用程序,并采取适当的纠正措施将消息放回订阅队列。

答案 1 :(得分:0)

拥有回退队列的应用程序始终管理回退队列。虽然在一般情况下也是如此,但在pub / sub的情况下尤其如此,因为发布者不可能知道所有订阅者是谁并且在整个MQ区域中管理他们的退出队列。

对此的争论是,特定的应用程序设计 确实 事先知道消息的收件人。我的回答是,这描述了一个分发列表而不是pub / sub,它专门用于将发布者与订阅者分离。

您所描述的实现的替代方法是在所有订阅上使用公共回退队列。您创建一个模型队列,指定预期的公共回退队列,并在主题对象中指定该模型。然后,新订阅会自动将回退消息路由到公共回退队列。然后,中央流程或发布者可以管理已撤消的消息。

请注意,此实现仍然遵循我的建议,即拥有回退队列的应用程序应始终管理回退队列,因为在这种情况下,管理回退消息的应用程序拥有该队列。