【发布时间】:2017-02-03 08:58:22
【问题描述】:
如果发布者向 WMQ 主题发布了一些消息,但订阅者没有接受,那么这些消息保存在哪里?有什么方法可以知道消息数吗?
【问题讨论】:
如果发布者向 WMQ 主题发布了一些消息,但订阅者没有接受,那么这些消息保存在哪里?有什么方法可以知道消息数吗?
【问题讨论】:
由于 MQ 符合 JMS,答案主要是 JMS 答案。
基于每个订阅(持久或其他)都有一个队列,只需查看持久订阅者的队列以确定未完成的消息数。
另请参阅 MQ 知识中心中的 Publish/subscribe lifecycles,了解有关持久订阅者队列的行为和规范的更多描述。
当然,如果该队列已填满,则行为会发生变化。根据设置,发布者阻止或发布继续,但消息被路由到异常队列(如果指定)、DLQ 或丢弃。
感谢 Dave Ware 关于非持久订阅的 cmets。
【讨论】:
我想知道您是否在询问 MQ 是否保留了发布到某个主题的所有消息的存储,独立于任何已注册的订阅?
如果这是问题,那么不,不是。当消息发布时,它们与每个现有订阅相匹配,并按照 T.Rob 的描述将副本发送到它们的每个关联队列。
所以唯一需要担心的是订阅的队列深度。
(有一点需要注意,MQ 支持“保留发布”,这意味着如果您选择这样做,MQ 只会保留该主题字符串的最新发布以供延迟订阅)。
我试图在这里解释所有这些(幻灯片/视频),这可能会有所帮助...http://www.slideshare.net/DavidWare1/ame-2271-mq-publish-subscribe-pdf
【讨论】: