wso2 esb中的故障转移配置

时间:2012-06-26 09:52:20

标签: esb wso2 endpoint failover wso2esb

我们有一个代理服务,可以执行以下操作 1.调用后端服务以获取客户端ID 2.使用为该客户端ID配置的端点(客户端端点),并将原始请求转发到该端点。 3.返回对请求的响应

之前我们将OUT_ONLY属性设置为true,同时将请求转发到客户端端点(步骤2)。 但我们现在必须为客户端端点使用故障转移端点配置。所以我们删除了OUT_ONLY属性并使用了 以下故障转移配置。客户端端点不会为转发的请求返回任何响应。 由于这个原因,注册的回调没有得到任何响应,随后由Timeouthandler清除。 最近我们面临一些由ESB抛出的CPU峰值和OutOfMemory错误。 我们怀疑突触回调处理程序正在利用大部分系统资源而无法恢复。 此配置是否可以创建任何OutOfMemory错误(如果压力测试),因为客户端端点没有返回任何响应? 请建议。

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="client_forward_endpoint_110">
<failover>
    <endpoint name="primary">
        <address uri="--primary endpoint--">
            <enableAddressing />
            <timeout>
                <duration>30</duration>
                <action>discard</action>
            </timeout>
            <markForSuspension>
                <errorCodes>101504, 101505, 101500</errorCodes>
                <retriesBeforeSuspension>3</retriesBeforeSuspension>
                <retryDelay>1</retryDelay>
            </markForSuspension>
            <suspendOnFailure>
                <initialDuration>1000</initialDuration>
                <progressionFactor>2</progressionFactor>
                <maximumDuration>64000</maximumDuration>
            </suspendOnFailure>
        </address>
    </endpoint>
    <endpoint name="secondary">
        <address uri="--secondary endpoint--">
            <enableAddressing />
            <timeout>
                <duration>30</duration>
                <action>discard</action>
            </timeout>
            <markForSuspension>
                <errorCodes>101504, 101505, 101500</errorCodes>
                <retriesBeforeSuspension>3</retriesBeforeSuspension>
                <retryDelay>1</retryDelay>
            </markForSuspension>
            <suspendOnFailure>
                <initialDuration>1000</initialDuration>
                <progressionFactor>2</progressionFactor>
                <maximumDuration>64000</maximumDuration>
            </suspendOnFailure>
        </address>
    </endpoint>
</failover>

1 个答案:

答案 0 :(得分:0)

如果您的端点没有返回任何响应,您如何判断它是否处于活动状态?

如果从端点到任何类型的请求都有任何类型的响应,您可以使用第一个“调用”中介来检查端点可用性,然后使用具有OUT_ONLY属性的发送中介来执行更复杂的中介。您可以使用交换机中介来评估“调用”中介的结果,并为该中介设置非常短的超时,以使吞吐量可接受,即使第一个端点不可访问也是如此。它不是一个理想的解决方案,但它应该有效。