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

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

MQJE001:IBM 中的完成代碼“2”,原因“2033”問題僅用于獲取一些消息

MQJE001:IBM 中的完成代碼“2”,原因“2033”問題僅用于獲取一些消息

肥皂起泡泡 2023-05-17 14:38:06
我目前正在從一個充滿事務(消息)的遠程隊列中讀取數據。我通過訪問隊列和測量記錄的大小來閱讀它。getOptions.options = MQC.MQGMO_CONVERT + MQC.MQGMO_WAIT;queue.getCurrentDepth();僅當隊列的大小大于 0 時。我繼續獲取消息。我的問題是,對于某些消息,我收到以下錯誤:MQJE001:完成代碼“2”,原因“2033”。但僅對于某些消息,有趣的是我有一個自定義重試變量,第三次重試得到一條空白消息。我可能的解決方案:起初我以為它可能是 waitInterval,我一直在將它從 150 毫秒更改為 30 秒。對于某些消息,我在不到 100 毫秒的時間內正確接收了它們。但是給我問題的消息占用了所有的waitInterval然后給出錯誤并得到空白消息到第三次重試。第二個測試是驗證 MQMessage 類的參數,我原來有:消息類型:8編碼:273格式:字符集:0當我正確收到一條消息時,以下參數仍然存在:消息類型:8編碼:273格式:MQSTR字符集:819當我在第三次重試時收到導致錯誤 2033 的消息時,我收到一條空白消息并且參數更改為以下內容:消息類型:8編碼:273格式:字符集:819我開始認為隊列中的消息沒有指示正確的格式。所以我聯系了支持人員,他們確認所有消息都具有正確的轉換標頭。所以我仍然懷疑為什么這個問題,如果有人遇到過類似的事情,我會很感激你的評論。謝謝。
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

您將 IBM MQ 視為數據庫,這會給您帶來各種痛苦。


這是您應該如何檢索消息:


MQGetMessageOptions gmo = new MQGetMessageOptions();

gmo.options = CMQC.MQGMO_WAIT + CMQC.MQGMO_FAIL_IF_QUIESCING;

gmo.waitInterval = 5000;  // wait up to 5 seconds

MQMessage receiveMsg = null;

boolean getMore = true;


while(getMore)

{

   receiveMsg = new MQMessage();


   try

   {

      // get the message on the queue

      queue.get(receiveMsg, gmo);


      /*

       * Now go do something with the message

       */

   }

   catch (MQException e)

   {

      if ( (e.completionCode == CMQC.MQCC_FAILED) &&

           (e.reasonCode == CMQC.MQRC_NO_MSG_AVAILABLE) )

      {

         // No message - loop again

      }

      else

      {

         System.out.println("MQException: " + e.getLocalizedMessage());

         System.out.println("CC=" + e.completionCode + " : RC=" + e.reasonCode);

         getMore = false;

      }

   }

   catch (IOException e)

   {

      System.out.println("IOException:" +e.getLocalizedMessage());

   }

}



查看完整回答
反對 回復 2023-05-17
  • 1 回答
  • 0 關注
  • 333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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