wso2 / synapse service chaining:将SOAP请求的响应作为另一个请求的输入

时间:2015-03-02 16:03:42

标签: wso2 synapse

我想要的顺序如下:

  1. 从队列中读取消息

  2. 变换

  3. 进行SOAP调用

  4. 将SOAP响应输出到另一个队列

  5. 步骤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>
    

1 个答案:

答案 0 :(得分:0)

您可以使用“发送接收”代替发送中介。像,

<send receive="jmsQueue2Sequence">
        <endpoint key="axisStockQuote"/>
    </send>

因此,axisStockQuote的响应将被发送到jmsQueue2Sequence。有关详细信息,请参阅[1]。

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