【问题标题】:Mule ESB - WMQ Connector - how to access WMQ message Header valuesMule ESB - WMQ 连接器 - 如何访问 WMQ 消息标头值
【发布时间】:2016-03-22 22:42:28
【问题描述】:

我们正在使用带有 WMQ 连接器的 Java 8、Mule ESB 3.7.2。

这是 Pub/Sub 应用程序,我创建了具有唯一应用程序身份数据的订阅者。这在 IBM WMQ 中作为 MQMD.ApplIdentityData 可用。

但是,Mule 消息不带此头信息。有没有办法在 Mule 流中访问这个值?

应用程序设计是这样的……

  • 2 流。 Flow #1 作为发布流工作,将发布到 WMQ 主题中。
  • WMQ 订阅者将被添加到 WMQ - 队列中。
  • Flow #2 将拾取每个订阅者消息并处理。
  • 每个订阅者都有唯一的应用程序标识数据,我需要在流程 #2(消费者流程)中访问该值。

Mule - WMQ 连接器:

<wmq:xa-connector name="WMQ" hostName="localhost" port="1414" queueManager="MyTestQM" transportType="CLIENT_MQ_TCPIP" validateConnections="true" doc:name="WMQ"   numberOfConsumers="10" cacheJmsSessions="true"/>

<wmq:inbound-endpoint queue="PUBLISH_QUEUE" connector-ref="WMQ" doc:name="WMQ"/>

骡子消息:

INFO  2016-03-16 16:44:10,941 [[pubsub].pubsubFlow1.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Consumer - 

org.mule.DefaultMuleMessage
{
  id=4f16e372-eb96-11e5-8945-ecb020524153
  payload=[B
  correlationId=ID:414d51204d7954657374514d202020206a5be95620018c3f
  correlationGroup=-1
  correlationSeq=-1
  encoding=UTF-8
  exceptionPayload=<not set>

  Message properties:
  INVOCATION scoped properties:
  INBOUND scoped properties:
        JMSCorrelationID=ID:414d51204d7954657374514d202020206a5be95620018c3f
        JMSDeliveryMode=1
        JMSDestination=topic://EIS_Test_Topic
        JMSExpiration=0
        JMSMessageID=ID:414d51204d7954657374514d202020206a5be9562001ea03
        JMSPriority=0
        JMSRedelivered=false
        JMSTimestamp=1458146650880
        JMSXAppID=MyTestQM                                                            
        JMSXDeliveryCount=1
        JMSXUserID=Santhosh-Kum
        JMS_IBM_Character_Set=ISO-8859-1
        JMS_IBM_Encoding=273
        JMS_IBM_Format=                        
        JMS_IBM_MsgType=8
        JMS_IBM_PutApplType=26
        JMS_IBM_PutDate=20160316
        JMS_IBM_PutTime=16441088
        MULE_CORRELATION_ID=ID:414d51204d7954657374514d202020206a5be95620018c3f
        MULE_MESSAGE_ID=ID:414d51204d7954657374514d202020206a5be9562001ea03
        MULE_ORIGINATING_ENDPOINT=endpoint.wmq.PUBLISH.QUEUE
  OUTBOUND scoped properties:
  SESSION scoped properties:
  }

【问题讨论】:

    标签: mule ibm-mq


    【解决方案1】:

    您应该能够通过假装它是一个属性来访问任何MQMD 字段。所以你可以要求Root.MQMD.ApplIdentityData的财产。

    【讨论】:

    • 感谢您的回复。我怎样才能访问 Mule 中的这个属性?那会在入站吗?我试过System.out.println("Root.MQMD.ApplIdentityData ::::: " + muleMsg.getProperty("Root.MQMD.ApplIdentityData"));。但是,我收到了 null。
    • 我不知道 mule,但您的问题看起来您正在使用 JMS,所以您不能只使用 Root.MQMD.AppIdentityData 作为 JMS 属性名称并像任何其他 JMS 属性一样检索它?
    • 它可以在独立的 Java 客户端中使用,但不能在 mule 中使用。我刚收到 Mule 家伙的消息,他们正在解决这个问题。而且,感谢您提供信息,另一种获取 Header 值的方法。我正在使用 JMS_IBM_MQMD_xyz 检索....
    【解决方案2】:

    Mule ESB 将在收到 MQ 消息后截断标头值,然后再将其发布到流中。

    Mulesoft 正在增强连接器。

    在此之前,唯一可用的选项是带有轮询的 Java 侦听器。如果我听到任何其他信息,我会发布。

    【讨论】:

    • Mule 用一批 WMQ 连接器/传输来解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2014-07-26
    • 2014-06-29
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多