我有简单的IBM MQ应用程序:有2个队列 - >一个接收队列,显然另一个是发送队列。现在我将大量消息放入接收队列,当应用程序处理消息时,我使用SIGSTOP暂停MQ核心进程。
消息流是否应立即停止?这就是我的情况:
应用程序可以接收所有消息并在处理后将它们推送到发送队列。现在,如果我尝试将更多消息推送到接收队列,则MQ推杆(示例实用程序)无法推送通常的消息。
我的问题是:在这种情况下,MQ应该如何表现? SIGSTOP信号后消息流是否应立即停止?我的应用程序也没有发现任何异常。
任何答案都会有所帮助。
答案 0 :(得分:2)
简短的回答是,没有人能告诉你WMQ在这种情况下应该如何表现,因为OMG,请不要这样做!
最近有人在列表服务器上问过类似的问题。 WMQ开发团队的Andrew Hickson对此做出了回应:
向MQ服务器端应用程序发送STOP信号是危险的 够了,但是向MQ进程发送STOP信号(例如amqrmppa) 会非常危险。如果那个过程碰巧拥有一个国际米兰 STOP信号到达整个队列时的进程锁定 经理很容易陷入停顿。同样的问题确实出现了 '简单'服务器端应用程序(例如队列管理器范围 在MQCONN处理期间获取/释放锁,但范围 无意中停止队列管理器的情况要大得多 MQ内部流程。
这里显而易见的问题是您认为“MQ核心流程”是什么?控制器?代理流程之一?它们都是相互通信的,没有一个代表“QMgr”的过程。
如果您需要中断处理,请使用WMQ工具,例如禁用队列上的PUT或GET,终止与QMgr的连接等。