2015-11-02 138 views
2

我写的IIB流是除其他事项外产生事件消息(监视功能)。为了能够处理所有这些事件,我需要做一个持久订阅。但是,如果我这样做了,并且如果消费应用程序因某种原因不能恢复在线,质量管理可能会填满并最终停止。 有什么办法可以避免这种情况?任何方式来创建一个管理的持久订阅与“强制消息到期”?WebSphere MQ和IIB:活动可能填补队列管理器

+0

强迫到期是什么意思?如果在消息上设置MQ,则MQ始终强制到期,只有在get读取消息之前删除消息才会“延迟”。因此,如果您在事件消息中设置了过期时间,并确保应用程序以适当的频率浏览目标队列,则队列将不会满。 –

回答

1

这原来是一个相当常见的情况,但一个可以是具有挑战性的。的许多方法可能的,这里有一些常见的:

使用循环队列
“循环队列”是不是IBM的官方用语,但是这是我在我的文章Mission:Messaging: Easing administration and debugging with circular queues杜撰。循环队列使用SupportPac MA01(now on GitHub!)中的Q程序和MQ的本地检测来保持队列调整为MAXDEPTH的80%。这是2011年发布的,根据我收到的反馈,我猜想至少有100家商店成功地使用了这种自动化。

使用MQ v8.0.0.4
作为MQ V8.0修订包4,IBM还介绍了队列和主题的CAPEXPIRY属性。 (见:Enforcing lower expiration times)只需设置它,并忘记它。

自动化队列清理
使用Q或QLoad程序来搜索比规定时间早消息,并删除它们。这个安排使用您喜欢的作业调度程序,或使用MQ仪器寻找的东西,如队列填满或很长的队列服务间隔

不要这样做
持久订阅是事情是应该到永远在场或至少可靠地回来。在这些情况下,提供部署订购并删除退役流程的队列部分。如果由于订户是临时的而不存在停用过程,则不要使用持久订阅。我知道,说起来容易做起来难。


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

这不是用于MFT组要求的易溶问题。有利于用户体验或有利于高效的系统使用,但不是两者兼顾现在我们有CAPEXPIRY这些订阅队列最终会自行清空。我很快就会预测排队的排队队列将会在哪里排队,这样我们就不会有数十亿人被遗弃的空荡荡的队列。

0

不要让一个持久订阅如果有机会,消费应用程序可能永远不会重新连接。

相关问题