Ibm mq WebSphere MQ和IIB:事件可能会填满队列管理器

Ibm mq WebSphere MQ和IIB:事件可能会填满队列管理器,ibm-mq,messagebroker,Ibm Mq,Messagebroker,我正在编写一个IIB流,其中包括生成事件消息(监控功能)。为了能够处理所有这些事件,我需要进行持久订阅。但是如果我这样做了,并且如果消费应用程序由于某种原因没有重新联机,QM可能会填满并最终停止。 有什么办法可以避免吗?创建具有“强制消息过期”的托管持久订阅的任何方法?如果消费应用程序可能永远无法重新连接,请不要将其设置为持久订阅。这是一个相当常见的用例,但可能具有挑战性。在许多可能的方法中,以下是一些常见的方法: 使用循环队列 “循环队列”不是IBM的官方术语,而是我在文章中创造的。循环队列是

我正在编写一个IIB流,其中包括生成事件消息(监控功能)。为了能够处理所有这些事件,我需要进行持久订阅。但是如果我这样做了,并且如果消费应用程序由于某种原因没有重新联机,QM可能会填满并最终停止。
有什么办法可以避免吗?创建具有“强制消息过期”的托管持久订阅的任何方法?

如果消费应用程序可能永远无法重新连接,请不要将其设置为持久订阅。

这是一个相当常见的用例,但可能具有挑战性。在许多可能的方法中,以下是一些常见的方法:

使用循环队列
“循环队列”不是IBM的官方术语,而是我在文章中创造的。循环队列是使用SupportPac MA01(!)中的Q程序和MQ的本机检测实现的,以将队列修剪为
MAXDEPTH
的80%。这是2011年发布的,根据我收到的反馈,我猜至少有100家商店成功地使用了这种自动化

使用MQ v8.0.0.4
从mqv8.0fixpack4开始,IBM已经在队列和主题上引入了
CAPEXPIRY
属性。(见:)设定它,然后忘记它

自动化队列清理
使用Q或QLoad程序搜索早于指定时间的邮件并将其删除。使用您最喜欢的作业调度器或使用MQ检测来查找诸如队列已满或队列服务间隔过长之类的情况

不要这样做
持久订阅是指应该始终存在或至少可靠地返回的内容。在这些情况下,在部署时提供订阅,并在停用过程中删除队列。如果由于订阅者是临时订阅者而没有解除服务过程,则不要使用持久订阅者。说起来容易做起来难,我知道

注释
我不能确定这一点,因为我不再作为MQ产品团队的一部分工作,但我怀疑新的
CAPEXPIRY
功能是为了解决这个问题而提供的。当IBM引入MQ MFT(以前称为FTE的产品)时,Explorer模块使用永久动态订阅来收集文件传输作业状态。然而,在很多情况下,浏览器实例忘记了它的订阅,人们更换了计算机或工作,或者有上千个其他原因导致放弃订阅


对于MFT需求集来说,这不是一个容易解决的问题。支持用户体验或支持有效的系统使用,但不能两者兼而有之。现在我们有了
CAPEXPIRY
,这些订阅队列最终将自己清空。我预测很快空
PERMDYN
队列的队列将在哪里过期,这样我们就不会有无数被丢弃的空队列。

你说的强制过期是什么意思?如果在消息上设置了过期,则MQ始终强制过期,只有在get读取消息之前,消息的删除才会“延迟”。因此,如果您设置事件消息的过期时间,并确保应用程序以适当的频率浏览目标队列,那么队列将不会满。看起来IBM关闭了“任务:消息传递:使用循环队列简化管理和调试”,而我找不到替换链接,你有本地版本可以在自己的博客上发布吗?