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

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

如何在 Java 中將 JMSBytesMessage 轉換為 TextMessage

如何在 Java 中將 JMSBytesMessage 轉換為 TextMessage

開心每一天1111 2023-06-14 15:58:31
我正在構建一些 MQ 隊列連接,我需要將消息隊列從queueReceiver.Receivenowait().因為queueReceiver.Receivenowait()格式是字節,我需要將它轉換為文本消息,以便將消息轉換為數組列表。我已經這樣做了:queueReceiver = queueSession.createReceiver(ringQueue);要獲取 Bytemessage,我需要轉換為 JMS 文本消息:List<String> outputList = new ArrayList<String>();while (loop) {   TextMessage msgResponse = (TextMessage) bytesMessage;   if (msgResponse.getText() == null) {      loop = false;   } else {      message = msgResponse.getText();      outputList.add(message);      msgResponse.acknowledge();   }}我有這個錯誤代碼:java.lang.ClassCastException: com.ibm.jms.JMSBytesMessage cannot be cast to javax.jms.TextMessage
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

我的猜測是您并不是真的想將 the 轉換BytesMessage為 a TextMessage,而只是想將 the 中的字節數組轉換BytesMessage為 a String。如果是這樣,那么您可以使用如下代碼:


List<String> outputList = new ArrayList<String>();

while (loop) {

   if (bytesMessage instanceof BytesMessage) {

      BytesMessage msgResponse = (BytesMessage) bytesMessage;

      if (msgResponse.getBodyLength() == 0) {

         loop = false;

      } else {

         byte[] bytes = new byte[(int) msgResponse.getBodyLength()];

         msgResponse.readBytes(bytes);

         outputList.add(new String(bytes));

         msgResponse.acknowledge();

      }

   }

}

當然,bytesMessage每次循環都需要不同的消息。


查看完整回答
反對 回復 2023-06-14
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

查看BytesMessage的 API 文檔可能會揭示一種可能的方法。除此之外,簡單地從消息中讀取字節并使用new String(bytes, charset)是一種選擇。

檢查傳入消息以確定類型是否符合您的期望通常是個好主意。

if?(message?instanceof?TextMessage)?...

這樣你就可以適當地處理負面案例。


查看完整回答
反對 回復 2023-06-14
  • 2 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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