3

如何在esb中使用代理的故障序列

我想在 EndPoint 发生故障时使用故障序列。例如,我使用 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>

请指导我!

4

2 回答 2

1

当您的端点 1 处于非活动状态时,它会返回一个肥皂故障,并且您希望它进入故障序列。但目前该故障序列被视为响应并将其发送到客户端(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

于 2013-04-22T03:21:46.457 回答
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

谢谢你,达沙那。

于 2013-04-20T16:02:46.730 回答