使用SIGSTOP暂停MQ队列管理器

时间:2013-12-17 15:20:07

标签: ibm-mq

我有简单的IBM MQ应用程序:有2个队列 - >一个接收队列,显然另一个是发送队列。现在我将大量消息放入接收队列,当应用程序处理消息时,我使用SIGSTOP暂停MQ核心进程。

消息流是否应立即停止?这就是我的情况:

应用程序可以接收所有消息并在处理后将它们推送到发送队列。现在,如果我尝试将更多消息推送到接收队列,则MQ推杆(示例实用程序)无法推送通常的消息。

我的问题是:在这种情况下,MQ应该如何表现? SIGSTOP信号后消息流是否应立即停止?我的应用程序也没有发现任何异常。

任何答案都会有所帮助。

1 个答案:

答案 0 :(得分:2)

简短的回答是,没有人能告诉你WMQ在这种情况下应该如何表现,因为OMG,请不要这样做!

最近有人在列表服务器上问过类似的问题。 WMQ开发团队的Andrew Hickson对此做出了回应:

  

向MQ服务器端应用程序发送STOP信号是危险的   够了,但是向MQ进程发送STOP信号(例如amqrmppa)   会非常危险。如果那个过程碰巧拥有一个国际米兰   STOP信号到达整个队列时的进程锁定   经理很容易陷入停顿。同样的问题确实出现了   '简单'服务器端应用程序(例如队列管理器范围   在MQCONN处理期间获取/释放锁,但范围   无意中停止队列管理器的情况要大得多   MQ内部流程。

这里显而易见的问题是您认为“MQ核心流程”是什么?控制器?代理流程之一?它们都是相互通信的,没有一个代表“QMgr”的过程。

如果您需要中断处理,请使用WMQ工具,例如禁用队列上的PUT或GET,终止与QMgr的连接等。