亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號