wso2/synapse 服务链:将来自 SOAP 请求的响应分配为另一个请求的输入

wso2/synapse service chaining: assign response from SOAP request as intput to another request

我想要的顺序如下:

  1. 从队列中读取消息

  2. 变换

  3. 调用 SOAP

  4. 将 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]。

[1] https://docs.wso2.com/display/ESB481/Send+Mediator