如何在没有发送的情况下制作inSequence

时间:2012-06-09 04:06:14

标签: esb wso2 mediator wso2esb

我有这个WSO2 ESB代理:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="sid008" transports="http" startOnLoad="true" trace="disable">
    <target>
        <inSequence>

            <switch source="get-property('inquiryId')">
                        <log level="full"/>
                <case regex="">

                        <send/>

                </case>
                 <default>

                 </default>
             </switch>

        </inSequence>

        <outSequence>                      
<....some processing..>
            <send/>

        </outSequence>
    </target>
    <publishWSDL key="CommonService.wsdl">
        <resource location="request.xsd" key="request.xsd"/>
        <resource location="response.xsd" key="response.xsd"/>
        <resource location="SMEV.xsd" key="SMEV.xsd"/>
        <resource location="statusAndError.xsd" key="statusAndError.xsd"/>
    </publishWSDL>
</proxy>

在默认情况下,此代理在没有send mediator的情况下不运行outSequence。如果没有发送调解员,我怎么能这样做

2 个答案:

答案 0 :(得分:2)

请尝试以下配置:

<default>
    <... some processing ...>
    <header action="remove" name="To"/>
    <property action="set" name="RESPONSE" scope="default" type="STRING" value="true"/>
    <send/>
</default>

使用此配置,您将直接从inSequence部分向客户端发送响应(您不会进入outSequence)。

答案 1 :(得分:1)

In和Out序列背后的理性是:

在seq中:当消息从客户端进入代理服务时,它始终转到按顺序。

Out Seq:当代理服务从ESB向后端服务发送消息时,响应将始终为Out seq(除非使用接收seq指定序列。)

希望这会有所帮助。