如何在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>
请指导我!
答案 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。