使用柑橘框架工作执行 xml 将消息放入 Websphere MQ 的测试用例时,无法为 jms 消息设置消息 ID

Unable to set messge ids for jms message while using citrus frame work to execute xml test case that puts message in Websphere MQ

我正在使用 citrus 集成框架来执行将消息放入 IBM websphere MQ 的测试用例。当我发送带有 jms 消息 headers 的特殊 headers 时。我能够设置 header 中提到的相关 ID,但我无法设置 messageID。这是我发送的 headers

    <send endpoint="QueueEndPoint">
      <message>
      <resource="file:c:\payloads\payload.xml">
      <message>
      <header>
       <element name="Scenario" value="some thing"/>
       <element  name="instanceID" value="some thing"/>
       <element name="citrus_jms_correlationId" value="012345678910111213141516"/>  
<element name="citrus_jms_messageId" value="012345678910111213143121"/>
      </header> 

here is the message id and correlation Id appearing in IBM MQ

坏主意,在 MQ 中设置 MessageId 是非常糟糕的主意。让 MQ 设置和控制 MessageId。设置 CorrelationId 是你应该设置的。

screen-shot 显示您将 CorrelationId 设置为 '161514131211109876543212',即 Hex='313631353134313331323131313039383736353433323132'。

JMS 标准规定 MessageId 不能由应用程序设置:

When a message is sent, JMSMessageID is ignored. When the send method returns it contains a provider-assigned value.

虽然可以在 MQ JMS 类 提供的扩展中覆盖它,但它需要 additional settings 在您明确声明要覆盖标准的地方。