【问题标题】:Consume message from MQ从 MQ 消费消息
【发布时间】:2020-06-25 19:18:27
【问题描述】:

我正在尝试使用来自 MQ 的消息,但代码挂起并且不显示输出。

JmsFactoryFactory FF = jmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = FF.createConnectionFactory();
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, HOST);
cf.setStringProperty(WMQConstants.WMQ_PORT, PORT);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, CHANNEL);
cf.setStringProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, QMGR);
cf.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, "JMS");
Connection connection = cf.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue(queuename);
MessageConsumer consumer1 = session.createConsumer(destination);

Message reply = consumer1.receive();
System.out.println(reply);

它不显示消息并挂起,甚至没有终止。

【问题讨论】:

    标签: java jms ibm-mq


    【解决方案1】:

    您需要在您的javax.jms.Connection 实例上调用start() 以便让消息流向消费者,例如:

    connection.start()
    

    另外,值得注意的是,调用javax.jms.MessageConsumer#receive() 预计会阻塞,直到收到消息,因此您在那里看到了预期的行为。如果您不想阻止,可以调用 javax.jms.MessageConsumer#receive(long) 并指定超时时间(以毫秒为单位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 2015-02-02
      • 1970-01-01
      相关资源
      最近更新 更多