wso2:ESB故障序列

时间:2013-04-20 10:19:47

标签: sequence wso2esb fault

如何在esb中使用代理的faultsequence

我想在EndPoint发生故障时使用faultsequence。例如,我使用jconsole停止service1,并希望在调用代理服务时将消息路由到service2。但是当我使用soapui调用代理时,它显示错误此消息:系统正在尝试访问非活动服务..

<target>
  <inSequence >
     <send>
        <endpoint name="cal" >     
         <address uri="http://localhost:9763/services/service1/"/>   
        </endpoint>
     </send>
  </inSequence>
  <faultSequence>
     <log level="custom">
        <property name="text" value="An unexpected error occured for service"/>
        <property name="message" expression="get-property('ERROR_MESSAGE')"/>
    </log>
     <send>
        <endpoint>
           <address uri="http://localhost:9763/services/service2/"/>
        </endpoint>
     </send>
  </faultSequence>

请指导我!

2 个答案:

答案 0 :(得分:1)

当您的端点1处于非活动状态时,它会返回一个soap故障,您希望它转到故障序列。但目前故障序列被视为一个响应,它被发送到客户端(soap ui)。

在WSO2 ESB 4.5.0及更高版本中,添加了一个新属性FORCE_ERROR_ON_SOAP_FAULT。通过设置此属性,soap故障将被定向到故障序列。当您处于故障序列时(例如,调用另一个序列),您可以执行下一个逻辑。

请参阅[1]以获取示例代理服务。

[1] http://maharachchi.blogspot.com/2012/09/now-you-can-send-soapfaults-to-fault.html

答案 1 :(得分:0)

我相信你的确切场景是主要终点的一部分,如果它失败了你需要将消息路由到次要终点。

正确的实施方法是不使用故障序列正确的方法是使用故障转移端点。您可以在[1] [2]找到参考文件。

对于示例,您可以参考“示例53:在3个端点之间发送故障转移”[3]。

[1]。http://wso2.org/project/esb/java/3.0.1/docs/endpoint_guide.html#FoEp [2]。http://docs.wso2.org/wiki/display/ESB403/Failover+Endpoint [3]。http://wso2.org/project/esb/java/3.0.1/docs/samples/endpoint_mediation_samples.html

谢谢你, Dharshana。