wso2/synapse 服务链:将来自 SOAP 请求的响应分配为另一个请求的输入
wso2/synapse service chaining: assign response from SOAP request as intput to another request
我想要的顺序如下:
从队列中读取消息
变换
调用 SOAP
将 SOAP 响应输出到另一个队列
步骤 1、2、3 工作正常,但是当我打算包含 SOAP 响应的步骤 4 中发送的消息为空时。我做错了什么?
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="JmsToWsdlJms" transports="https,http,jms" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<enrich>
<source type="body" clone="true"/>
<target type="property" property="jms_body_text"/>
</enrich>
<property name="jms_body_text"
expression="get-property('jms_body_text')"
scope="default"/>
<xslt key="jmsMsgToSoapMsg_xslt">
<property name="jms_text" expression="get-property('jms_body_text')"/>
</xslt>
<log level="full">
<property name="After transformation" value="****"/>
</log>
<send>
<endpoint key="axisStockQuote"/>
</send>
<log level="full">
<property name="After callout" value="****"/>
</log>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint key="jmsQueue2"/>
</send>
</inSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>text/plain; charset=ISO-8859-1</default>
</rules>
</parameter>
<parameter name="transport.jms.DestinationType">queue</parameter>
<parameter name="transport.jms.Destination">cn=tro_Q_JMS1</parameter>
</proxy>
您可以使用 'send receive' 代替发送中介。像
<send receive="jmsQueue2Sequence">
<endpoint key="axisStockQuote"/>
</send>
这样 axisStockQuote 的响应将被发送到 jmsQueue2Sequence。有关详细信息,请参阅 [1]。
我想要的顺序如下:
从队列中读取消息
变换
调用 SOAP
将 SOAP 响应输出到另一个队列
步骤 1、2、3 工作正常,但是当我打算包含 SOAP 响应的步骤 4 中发送的消息为空时。我做错了什么?
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="JmsToWsdlJms" transports="https,http,jms" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<enrich>
<source type="body" clone="true"/>
<target type="property" property="jms_body_text"/>
</enrich>
<property name="jms_body_text"
expression="get-property('jms_body_text')"
scope="default"/>
<xslt key="jmsMsgToSoapMsg_xslt">
<property name="jms_text" expression="get-property('jms_body_text')"/>
</xslt>
<log level="full">
<property name="After transformation" value="****"/>
</log>
<send>
<endpoint key="axisStockQuote"/>
</send>
<log level="full">
<property name="After callout" value="****"/>
</log>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint key="jmsQueue2"/>
</send>
</inSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>text/plain; charset=ISO-8859-1</default>
</rules>
</parameter>
<parameter name="transport.jms.DestinationType">queue</parameter>
<parameter name="transport.jms.Destination">cn=tro_Q_JMS1</parameter>
</proxy>
您可以使用 'send receive' 代替发送中介。像
<send receive="jmsQueue2Sequence">
<endpoint key="axisStockQuote"/>
</send>
这样 axisStockQuote 的响应将被发送到 jmsQueue2Sequence。有关详细信息,请参阅 [1]。