我将JMS消息作为
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<content>
<entry type="1">
<textMessage JMSDeliveryMode="2" JMSDestination="queue:///QUEUE" JMSExpiration="0" JMSMessageID="ID:c3e2d840d8e3c1f14040404040404040cf1eba01c4eff036" JMSPriority="4" JMSRedelivered="false" JMSTimestamp="1434705226223" fromQueue="true" codec="Base64">
<text>dGVzdA==</text>
</textMessage>
</entry>
</content>
&#13;
但当我把它拉进wso2 esb时,它会进入肥皂信封而且我无法在这里检索属性,例如JMSDestination等。
我想在WSO2 ESB中阅读这些细节。有办法吗?
从JMS获取消息后,我收到以下SOAP消息,它正在记录,或者xPath仅对此有效。
[2015-06-22 11:08:33,632] INFO - LogMediator To: , WSAction: urn:mediate, SOAPA
ction: urn:mediate, MessageID: ID:c3e2d840d8e3c1f14040404040404040cf224f7f3bbf47
25, Direction: request, Envelope: <?xml version="1.0" encoding="utf-8"?><soapenv
:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Bod
y>test1</soapenv:Body></soapenv:Envelope>
&#13;
谢谢
答案 0 :(得分:0)
您可以在inSequence中使用以下代码从邮件正文中选择任何信息(即使有内部肥皂信封):
<property name="JMSDestination" expression="$body/content/entry/textMessage/@JMSDestination"/>
验证是否正在使用适当的消息构建器构建消息,否则您将无法看到消息内容。请参阅此JMS代理示例:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="JMSProxyName" transports="jms" startOnLoad="true" trace="disable">
<target>
<inSequence>
<log level="custom">
<property name="Log JMSDestination" expression="$body/content/entry/textMessage/@JMSDestination"/>
</log>
<drop/>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
<parameter name="transport.jms.Destination">YourQueue</parameter>
</proxy>
答案 1 :(得分:0)
我正在我的发送代理中设置JMS标头。
在接收代理中,您可以使用get-property访问该属性,如下例所示。
<log level="custom">
<property name="Autodeploy_TSONL_CreateProxyTarget - Config Params transport intervall "
expression="get-property('transport','TRANSPORT_TRANSFERINTERVALL')"/>
希望有所帮助。