簡體   English   中英

在 JMS 中設置 IBM MQ 定制屬性不起作用

[英]Setting IBM MQ custom property in JMS doesn't work

發送消息時嘗試在 JMS 中設置 IBM MQ 定制屬性。 它不起作用。

我正在 JMS/Apache camel 中尋找以下等效項。

mQMessage.setStringProperty( "customProperty", "123" );

嘗試了以下 3 個選項:

1) exchange.getIn().setHeader( "customProperty", "123" );
2) exchange.getIn().setProperty( "customProperty", "123" );
3) mQQueueConnectionFactory.setStringProperty( "customProperty", "123" );

以下讀取該屬性的代碼會引發錯誤,因為該屬性似乎不存在。 mQMessage.getStringProperty("messageGlobalSequenceNumber")

引發以下錯誤:

com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2471'.
        at com.ibm.mq.MQMessage.getProperty(MQMessage.java:5694)
        at com.ibm.mq.MQMessage.getStringProperty(MQMessage.java:6949)
        at com.ibm.mq.MQMessage.getStringProperty(MQMessage.java:6925)
...

您確定您嘗試檢索的屬性確實存在於該消息中嗎? 因為原因代碼 2471 (MQRC_PROPERTY_NOT_AVAILABLE) 明確表示指定的屬性不存在。

在 JMS(對於 IBM MQ)中創建消息屬性的正確方法如下:

/**
 * Send a message to a queue.
 * @param session
 * @param myQ
 * @throws JMSException
 */
private void sendMsg(QueueSession session, Queue myQ) throws JMSException
{
   QueueSender sender = null;

   try
   {
      TextMessage msg = session.createTextMessage();
      msg.setText("This is a test message.");
      msg.setStringProperty("MyProp01", "somevalue");

      sender = session.createSender(myQ);
      sender.send(msg);
   }
   finally
   {
      try
      {
         if (sender != null)
            sender.close();
      }
      catch (Exception ex)
      {
         System.out.println("sender.close() : " + ex.getLocalizedMessage());
      }
   }
}

您是否使用 MQ 工具檢查消息的屬性值? 我運行了上面的代碼,然后使用MQ Visual Edit檢查了隊列中的消息,這是一個屏幕截圖:

在此處輸入圖像描述

或顯示命名屬性(又名消息屬性)的已打開選定消息的屏幕截圖:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM