[英]Listener for IBM MQ
我正在尝试为IBM MQ queue创建侦听器,以使用本机API将消息放入队列时读取消息。
最好使用Thread / TimerTask每秒执行一次GET。
我需要使用CCDT,用户名和密码进行身份验证。
有没有可用的默认监听器? 使用下面的代码阅读
MQMessage theMessage = new MQMessage();
MQGetMessageOptions mqGetMessageOptions = new MQGetMessageOptions();
mqGetMessageOptions.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST;
mqGetMessageOptions.matchOptions=MQC.MQMO_NONE;
mqGetMessageOptions.waitInterval=5000;
try{
//read the message from queue
queue.get(theMessage,mqGetMessageOptions);
mqGetMessageOptions.options = MQC.MQGMO_MSG_UNDER_CURSOR;
queue.get(theMessage, mqGetMessageOptions);
您的代码是浏览消息而不是使用消息(差异很大)。
其次,您应该始终使用MQC.MQGMO_FAIL_IF_QUIESCING选项。 即
mqGetMessageOptions.options=MQC.MQGMO_WAIT | MQC.MQGMO_BROWSE_FIRST | MQC.MQGMO_FAIL_IF_QUIESCING;
第三,不要使用轮询来访问队列-您的线程/计时器提示。 这是浪费资源。 您已经为MQGET定义了5秒的等待间隔,如果间隔不够长,则将其增加到更合理的范围。
最后,为什么将这个问题标记为“ JMS”。 您的问题与JMS没有任何关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.