Mule ESB-WMQ连接器-如何访问WMQ消息头值

Mule ESB-WMQ连接器-如何访问WMQ消息头值,mule,ibm-mq,Mule,Ibm Mq,我们正在使用Java8、MuleESB3.7.2和WMQ连接器 这是发布/订阅应用程序,我创建了具有唯一应用程序标识数据的订阅服务器。这在IBM WMQ中作为MQMD.ApplIdentityData提供 但是,Mule消息不会带来此头信息。在Mule flow中是否有任何方法可以访问此值 应用程序设计是这样的 2流动。Flow#1的工作原理是,发布流将发布到WMQ主题中 WMQ订阅者将被添加到WMQ队列中 流#2将在每个订阅者消息和进程中进行 每个订户都获得了唯一的应用程序标识数据,我需要访

我们正在使用Java8、MuleESB3.7.2和WMQ连接器

这是发布/订阅应用程序,我创建了具有唯一应用程序标识数据的订阅服务器。这在IBM WMQ中作为MQMD.ApplIdentityData提供

但是,Mule消息不会带来此头信息。在Mule flow中是否有任何方法可以访问此值

应用程序设计是这样的

  • 2流动。Flow#1的工作原理是,发布流将发布到WMQ主题中
  • WMQ订阅者将被添加到WMQ队列中
  • 流#2将在每个订阅者消息和进程中进行
  • 每个订户都获得了唯一的应用程序标识数据,我需要访问Flow#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"/>

Mule消息:

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:
  }
INFO 2016-03-16 16:44:10941[[pubsub].pubsubFlow1.stage1.02]org.mule.api.processor.LoggerMessageProcessor:消费者-
org.mule.DefaultMuleMessage
{
id=4f16e372-eb96-11e5-8945-ecb020524153
有效载荷=[B
correlationId=ID:414D51204D7954657374514D2020206A5BE95620018C3F
correlationGroup=-1
correlationSeq=-1
编码=UTF-8
例外有效载荷=
消息属性:
调用范围的属性:
入站作用域属性:
JMSCorrelationID=ID:414D51204D7954657374514D2020206A5BE95620018C3F
JMSDeliveryMode=1
JMSDestination=topic://EIS_Test_Topic
JMSExpiration=0
JMSMessageID=ID:414D51204D7954657374514D2020206A5BE9562001EA03
JMSPriority=0
jmsrediver=false
jmstiestamp=1458146650880
JMSXAppID=MyTestQM
JMSXDeliveryCount=1
JMSXUserID=Santhosh Kum
JMS\u IBM\u Character\u Set=ISO-8859-1
JMS\u IBM\u编码=273
JMS_IBM_格式=
JMS_IBM_MsgType=8
JMS\u IBM\u putapptype=26
JMS\u IBM\u PutDate=20160316
JMS\u IBM\u PutTime=16441088
MULE_相关性_ID=ID:414D51204D7954657374514D2020206A5BE95620018C3F
MULE_MESSAGE_ID=ID:414D51204D7954657374514D202006A5BE9562001EA03
MULE_origing_ENDPOINT=ENDPOINT.wmq.PUBLISH.QUEUE
出站作用域属性:
会话作用域属性:
}

您应该能够通过将任何
MQMD
字段假装为属性来访问它。因此,您可以请求属性
Root.MQMD.ApplIdentityData
您应该能够通过将任何
MQMD
字段假装为属性来访问它。因此,您可以请求属性
Root.MQMD.ApplIdentityData
<>一旦收到MQ消息,Mule ESB将截断消息头值,然后再将其发布到流中

Mulesoft正在增强连接器


在此之前,唯一可用的选项是带轮询的Java Listener。如果我听到其他消息,我将发布。

Mule ESB将在将消息发布到流之前截断MQ消息中的头值

Mulesoft正在增强连接器


在此之前,唯一可用的选项是带轮询的Java Listener。如果我听到任何其他消息,我将发布。

感谢您的回复。我如何在Mule中访问此属性?这会在Inbound中吗?我已经尝试了
System.out.println(“Root.MQMD.ApplIdentityData::”+muleMsg.getProperty(“Root.MQMD.ApplIdentityData”))
。但是,我收到了空值。我不知道mule,但是你的问题看起来像是在使用JMS,所以你不能只使用Root.MQMD.AppIdentityData作为JMS属性名,并像其他JMS属性一样检索它吗?它在独立Java客户端中工作,但在mule中不工作。我刚收到mule的消息,他们正在解决这个问题。而且,感谢您提供的信息,这是获取头值的另一种方式。我正在使用JMS_IBM_MQMD_xyz进行检索……感谢您的回复。我如何在Mule中访问此属性?这会在Inbound中吗?我已经尝试了
System.out.println(“Root.MQMD.ApplIdentityData::”+muleMsg.getProperty(“Root.MQMD.ApplIdentityData”))
。但是,我收到了空值。我不知道mule,但是你的问题看起来像是在使用JMS,所以你不能只使用Root.MQMD.AppIdentityData作为JMS属性名,并像其他JMS属性一样检索它吗?它在独立Java客户端中工作,但在mule中不工作。我刚收到mule的消息,他们正在解决这个问题。而且,感谢您提供的信息,这是获取标题值的另一种方式。我正在使用JMS_IBM_MQMD_xyz进行检索……Mule使用批处理WMQ Connector/Transported来修复问题。Mule使用批处理WMQ Connector/Transported来修复问题。