首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IBM MQ侦听器服务-未触发onMessage

IBM MQ侦听器服务-未触发onMessage
EN

Stack Overflow用户
提问于 2018-06-02 15:12:31
回答 1查看 1.5K关注 0票数 1

我想读取来自IBM MQ的消息并只打印它们。

//我的主类

代码语言:javascript
复制
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;

import com.ibm.mq.jms.MQQueue;
import com.ibm.mq.jms.MQQueueConnection;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import com.ibm.mq.jms.MQQueueSession;
import com.ibm.msg.client.wmq.WMQConstants;

public class QueueConnector {
    public static void main(String[] args) throws JMSException {
        MQQueueConnectionFactory qcf = new MQQueueConnectionFactory();
        MQQueueConnection qc;
        Queue queue;
        MQQueueSession queueSession;
        MessageConsumer consumer;
        qcf.setHostName ("XYZ");
        qcf.setPort (Integer.parseInt("abc"));
        qcf.setQueueManager ("ABC");
        qcf.setChannel ("IJK");
        qcf.setTransportType (WMQConstants.WMQ_CM_CLIENT);
        qc = (MQQueueConnection) qcf.createQueueConnection ();
        queue = new MQQueue("QUEUE_NAME");
        queueSession = (MQQueueSession) qc.createQueueSession (false,Session.AUTO_ACKNOWLEDGE);
        consumer = queueSession.createConsumer(queue);
        Listener listener = new Listener();
        consumer.setMessageListener(listener);
        qc.start();
    }
}

//监听器类

代码语言:javascript
复制
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class Listener implements MessageListener {

    @Override
    public void onMessage(Message message) {
        // TODO Auto-generated method stub
        try {
            System.out.println(((TextMessage)message).getText());
        } catch (JMSException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("From Listener!");

    }
}

主类在不调用onMessage的情况下终止,即使队列中有消息也是如此。有没有人能帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:12:34

你需要让你的程序保持运行。当你到达main的末尾时,程序将退出,因此你的监听器不会触发。

尝试将new Scanner(System.in).nextLine();放在方法的末尾,以验证它是否正常工作。当然,您可能希望将此退出条件更改为更合适的条件(或实际关闭扫描仪)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50654451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档