java - 消费来自 MQ 的消息

标签 java jms ibm-mq

我正在尝试使用来自 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);

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

最佳答案

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

connection.start()

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

关于java - 消费来自 MQ 的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676137/

相关文章:

java - 确认来自 JMS 中不同 channel / session 的消息

java - TIBCO JMS jar 文件

Websphere消息代理与MQ

java - 带有嵌套类的抽象类,这可能吗?

java - 找到最长的重复序列

java - 使用 toCharArray() 的字符串文字在 Java 中产生垃圾

java - 当我尝试删除队列时出现异常,例如 Activemq 中的 InstanceNotFoundException

java - MQ 最大连接数问题

security - WebSphere 7,配置没有用户 ID : MQRC_NOT_AUTHORIZED 的 JMS Q 连接工厂

java - mongodb (java) 包括按名称排列的 id 字段