我有一个简单的程序来处理队列中的消息.我的目的是处理队列中的所有可用消息,并仍然侦听队列中的传入消息.
我已经在无限循环中编写了处理部分,因为我希望它始终监听队列并处理消息.
在再次处理完所有消息之后,它会尝试从队列中获取消息(因为它在无限循环内)
是没有消息它抛出MQRC 2033 NO_MSG_AVAILABLE异常(事实上它是正确的)并且我的程序退出.
有人可以提出不断收听此队列的想法并避免此异常.
执行MQGETAPI调用时,可以选择让程序等待消息.您可以指定等待时间(以毫秒为单位)或指定永久等待.只要确保如果您的应用程序等待超过几秒钟,请指定"如果静止失败".这允许队列管理器干净地停止.如果没有"如果静止失败",管理员将需要发出抢先关闭,这可能会导致问题.
在" 等待消息"一章的程序员指南中有专门针对此问题的部分.根据您编写的语言,要指定的实际值在Programmer's Reference,Using Java手册或Using .Net手册中.单击上面的链接时,每个选项都将显示在导航面板中.