Mule ESB - WMQ Connector - 如何访问WMQ消息Header值

时间:2016-03-17 13:31:57

标签: mule ibm-mq

我们使用Java 8,Mule ESB 3.7.2和WMQ Connector。

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

但是,Mule消息不会带来此标头信息。有没有办法在Mule流程中访问此值?

应用程序设计就是这样......

  • 2流量。流#1作为发布流将发布到WMQ主题。
  • WMQ订阅者将被添加到WMQ - 队列中。
  • 流程#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:
  }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

Mule ESB会在将消息发布到流之前从MQ消息中截断标头值。

Mulesoft正在增强连接器。

在此之前,只有可用选项是带有轮询的Java Listener。如果我听到其他的话,我会发帖。