如何避免 MQRC2033 NO_MSG_AVAILABLE
我有一个简单的程序来处理队列中的消息。 我的目的是处理队列中的所有可用消息,并仍然侦听队列中的传入消息。
我已将处理部分编写在无限循环内,因为我希望它始终侦听队列并处理消息。
再次处理所有消息后,它会尝试从队列中获取消息(因为它位于无限循环内),并且没有
消息,它会抛出 MQRC 2033 NO_MSG_AVAILABLE 异常(事实上它是正确的),并且我的程序退出。
有人可以给出一个想法来持续监听这个队列并避免这个异常吗?
I have a simple program to process messages from a queue.
My intention is to process all available messages in queue and still listen to queue for incoming messages.
I have written the processing part inside a infinite loop as i want it to listen to queue always and process messages.
Once after processing all messages again it tries to get a message(as it is inside a infinite loop) from the queue and there
is no messages it throws MQRC 2033 NO_MSG_AVAILABLE exception(infact it is correct) and my program exits.
Can someone give an idea to continously listen to this queue and avoid this exception.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您执行 MQGET API 调用时,可以选择让程序等待消息。您可以指定等待时间(以毫秒为单位)或指定永远等待。只要确保如果您让应用程序等待超过几秒钟,还要指定“如果静止则失败”。这允许队列管理器干净地停止。如果没有“如果静止则失败”,管理员将需要发出抢先关闭的命令,这可能会导致问题。
等待消息章节。根据您编写的语言,要指定的实际值位于 程序员参考,使用 Java 手册或 使用 .Net手动的。当您单击上面的链接时,每一个都将在导航面板中可见。
When you execute the
MQGET
API call, there is an option to have the program wait for messages. You can specify a wait time (in milliseconds) or specify to wait forever. Just make sure that if you have the app wait for more than a few seconds, also specify 'Fail if Quiescing'. This allows the queue manager to be stopped cleanly. Without 'Fail if Quiescing' the administrator will need to issue a preemptive shutdown which can cause problems.There is a section specifically for this question in the Programmer's Guide in the Waiting for Messages chapter. Depending on the language you are writing in ,the actual value to specify is in the Programmer's Reference, the Using Java manual or the Using .Net manual. Each of these will be visible in the navigation panel when you click the link above.