为了账号安全,请及时绑定邮箱和手机立即绑定

MQ JMS 消息 ID 不返回文本消息以及如何以正确格式编写

MQ JMS 消息 ID 不返回文本消息以及如何以正确格式编写

慕尼黑5688855 2022-06-08 17:38:48
我测试了一个将 a 传递给 IBM MQ 上的队列的独立 JMS 客户端TextMessage,我得到了以下错误消息 ID:编号:414d51204243573032413154202020205bc6bd3e25423865java.lang.RuntimeException:没有短信我发送了一个TextMessagewith This is for Test,但为什么我没有收到一个TextMessage?在此代码运行之前,队列中没有其他消息。如果短信成功,如何在 Java 中以可读格式读取消息 ID(发送请求 MessageID 和回复消息 ID)。我需要在下面的代码中更改什么吗?TextMessage textMessage = queueSession.createTextMessage("This is for Test");textMessage.setJMSReplyTo(queue);textMessage.setJMSType("mcd://xmlns");//message typetextMessage.setJMSExpiration(2*1000);//message expirationtextMessage.setJMSDeliveryMode(DeliveryMode.PERSISTENT); queueSender = queueSession.createSender(queueSession.createQueue(outputQName));queueSender.setTimeToLive(2*1000);queueSender.send(textMessage);String jmsCorrelationID = " JMSCorrelationID = '" + textMessage.getJMSMessageID() + "'";while (true) {                            Message message = queueReceiver.receive(60*1000);    if (! (message instanceof TextMessage))        throw new RuntimeException("no text message");    TextMessage tm = (TextMessage) message;    System.out.println("Message:"+tm.getText());  }
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

这可能仅仅是因为您的消息正在从队列中过期吗?

我看到您将消息到期时间设置为 2 秒。许多回复应用程序会将剩余的到期值复制到回复消息中。因此,如果读取请求并向您发送回复的应用程序在发送请求后的 2 秒内未读取您的请求,或者如果它读取请求并回复剩余的到期时间,并且回复不会使其返回以供使用你,它会从队列中消失。

尝试将到期时间增加到更高的值。


另请注意,您通过两种不同的方法设置相同的到期值,一种是生产者发送的所有消息的默认值,另一种是每条消息的设置。

这会为生产者发送的所有消息设置默认过期时间:

queueSender.setTimeToLive(2*1000);

这会在您发送的特定消息上设置到期时间,并将覆盖queueSender.setTimeToLive,因此您只需要这些行之一。

textMessage.setJMSExpiration(2*1000);//message expiration


查看完整回答
反对 回复 2022-06-08
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您的会话是事务性的吗?
如果是,那么您的消息在队列中是“不可见的”,直到事务“提交”并且您永远不会commit......
我很想知道message当你测试它的类时的内容是什么......它是否为空?
receive立即返回还是仅在超时到期后返回(在您的情况下为 60 * 1000 毫秒)?
丹尼斯

查看完整回答
反对 回复 2022-06-08
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

在您的请求-回复用例中,请求客户端发送的消息类型与其将接收的消息类型没有直接关系。请求客户端接收的消息类型取决于响应客户端发送的消息。

至于String从 IBM MQ 实现中获取消息 ID,您可以参考这个答案


查看完整回答
反对 回复 2022-06-08
  • 3 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号