我正在编写一个IIB流程,其中包括生成事件消息(监视功能)。为了能够处理所有这些事件,我需要进行持久的订阅。但如果我这样做,并且由于某些原因消费应用程序没有重新上线,QM可能会填满并最终停止。 有什么办法可以避免吗?有“强制邮件过期”的任何方法来创建托管持久订阅吗?
答案 0 :(得分:1)
这是一个相当常见的用例,但可能具有挑战性。在可能的许多方法中,这里有一些常见的方法:
使用循环队列
“循环队列”不是IBM的官方术语,而是我在文章 animade.tv 中创造的内容。循环队列使用来自SupportPac MA01(Mission:Messaging: Easing administration and debugging with circular queues!)的Q程序和MQ的本机检测来实现,以将队列修剪为MAXDEPTH
的80%。这是在2011年发布的,根据我收到的反馈,我猜至少有100家商店成功使用这种自动化。
使用MQ v8.0.0.4
从MQ v8.0 Fix Pack 4开始,IBM在队列和主题上引入了CAPEXPIRY
属性。 (参见: now on GitHub )只需设置并忘记它。
自动化队列清理
使用Q或QLoad程序搜索超过指定时间的邮件并将其删除。使用您最喜欢的作业调度程序安排此操作,或使用MQ检测来查找填充队列或实际长队列服务间隔等内容
不要这样做
持久订阅适用于假设始终存在或至少可靠地返回的内容。在这些情况下,在部署时配置订阅并删除解除授权过程的队列部分。如果由于订户是临时订户而没有停用过程,请不要使用持久订阅。说起来容易做起来难,我知道。
<强> 备注 强>
我无法确定这一点,因为我不再作为MQ产品团队的一员工作,但我怀疑提供了新的CAPEXPIRY
功能来解决此问题。当IBM引入MQ MFT(以前称为FTE的产品)时,Explorer模块使用永久动态订阅来收集文件传输作业状态。但是,在很多情况下,Explorer实例忘记了它的订阅,人们更改了计算机或工作,或者导致放弃订阅的其他一千个原因。
对于MFT要求,这不是一个容易解决的问题。支持用户体验或支持有效的系统使用,但不是两者兼顾。现在我们有CAPEXPIRY
这些订阅队列最终会自行清空。我很快就会预测空的PERMDYN
队列的队列到期时间,所以我们不会有数以千计的废弃空队列。
答案 1 :(得分:0)
如果消费应用程序可能永远不会重新连接,请不要使其成为持久订阅。