WMQ主题是否保存消息本身?

时间:2016-08-31 15:30:13

标签: jms ibm-mq

如果发布者向WMQ主题发布了一些消息,但是子网不接受它,那么消息的保存位置是什么?有没有办法知道消息计数?

2 个答案:

答案 0 :(得分:4)

由于MQ符合JMS,答案主要是JMS答案。

  1. 如果订阅不持久且未注册订阅,则会丢弃该订户的消息。
  2. 如果订阅是持久的,MQ会创建一个队列(或者如果订户指定,则使用预定义的队列)来传递消息。如果订户没有消费,消息将收集在那里。
  3. Dave指出的第三种情况他评论说非持久订阅者正在打开订阅但不消费消息。由于创建了一个队列来接收这些队列,因此可以查询队列深度以确定是否有备份。
  4. 基于每个订阅都有一个队列(持久或其他),只需查看持久订阅者的队列,以确定未完成的消息数。

    另请参阅MQ知识中心中的 Publish/subscribe lifecycles ,以获取有关持久订阅者队列的行为和规范的更多说明。

    当然,如果该队列填满了行为更改。根据设置,发布者阻止或发布继续,但消息将路由到异常队列(如果已指定),DLQ或丢弃。

    感谢Dave Ware提供有关非持久订阅的评论。

答案 1 :(得分:2)

我想知道你是否在询问MQ是否保留了发布到主题的所有消息的存储,而与任何已注册的订阅无关?

如果这是问题,那么不,它没有。发布消息时,它们与每个现有订阅匹配,并且副本将发送到每个相关队列,如T.Rob所述。

因此,唯一需要担心的队列深度是订阅。

(有一点需要注意,MQ支持“保留的出版物”, - 这意味着如果您选择这样做,MQ会保留关于该主题字符串的最新出版物,以便进行后期订阅。)

我尝试在这里解释所有这些(幻灯片/视频),这可能会有所帮助...... http://www.slideshare.net/DavidWare1/ame-2271-mq-publish-subscribe-pdf