【问题标题】:How to use WSO2 ESB to set message format to MQSTR如何使用 WSO2 ESB 将消息格式设置为 MQSTR
【发布时间】:2015-10-27 20:07:07
【问题描述】:

我正在使用 WSO2 ESB 4.9 通过 .bindings 文件连接到 WebSphere MQ 队列。默认情况下,WSO2 ESB 通过 JMS 以 MQHRF2 格式发送 MQ 消息。如何配置 WSO2 ESB 以便它以 MQSTR 格式发送 MQ 消息,类似于以下 Java 编码:

Queue myQueue = session.createQueue("queue:///myQueue?targetClient=1");

((MQQueue) queue).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);

非常感谢!

这是我在 WSO2 ESB 上配置的代理的一部分,建议如下:

     <outSequence>
     <property name="TRANSPORT_HEADERS" scope="axis2" action="remove"/>
     <property name="messageType" value="text/plain" scope="axis2"/>
     <property name="JMS_IBM_Format"
               value="MQSTR"
               scope="transport"
               type="STRING"/>
     <send/>
  </outSequence>
  <endpoint>
     <address uri="jms:/xxxx?transport.jms.ConnectionFactoryJNDIName=..."
              format="soap11"/>
  </endpoint>

以下属性设置用于通过不将其发送到下游 (XML/JMS) 来从上游 (JSON/HTTP) 中删除不需要的 HTTP 标头信息:

<property name="TRANSPORT_HEADERS" scope="axis2" action="remove"/>

【问题讨论】:

    标签: jms wso2 esb mq


    【解决方案1】:

    您可以尝试在将其发送到 MQ 之前添加以下属性。

     <property name="JMS_IBM_Format"
                   value="MQSTR"
                   scope="transport"
                   type="STRING"/>
    <send>
        <!-- your MQ endpoint here -->
    </send>
    

    【讨论】:

    • 您好 .... 感谢您如此迅速地发布您的建议。我已经测试了您的解决方案,但它不起作用,即 MQ 标头格式与 MQHRF2 保持不变。
    • 当我们添加该属性时,它会作为标头与消息一起传递给 MQ(除此之外没有进行任何特殊处理)。在您的情况下,在 MQ 收到的标头值是否保持为“MQHRF2”?或者您是指在 esb 从 MQ 收到的消息的标头?还有什么 MQ 版本/环境?
    • 您好... WSO2 ESB 似乎忽略了上述属性设置而没有抛出任何错误,因此在 MQ 服务器上接收到的标头值仍为 MQHRF2。如果我使用 Java JMS 代码通过将 MQ 标头格式设置为 MQSTR 来发送 MQ 消息,则我的 MQ 服务器按预期接收正确的 MQ 消息标头没有问题。所以我怀疑根本问题与我的 MQ 环境(接收器)有关。
    • 这很奇怪,因为最近我们已经能够使用 ESB 4.9.0(到 MQ 7.1)以 MQSTR 格式发送消息。您可以尝试在属性配置中添加“操作”参数。即 action="set" 显式设置属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多