[英]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.