繁体   English   中英

wso2 esb中的故障转移配置

[英]Failover configuration in wso2 esb

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

早些时候,我们在将请求转发到客户端端点时将OUT_ONLY属性设置为true(第2步)。 但是我们现在必须对客户端端点使用故障转移端点配置。 因此,我们删除了OUT_ONLY属性,并使用了以下故障转移配置。 客户端端点不对转发的请求返回任何响应。 因此,注册的回调不会获得任何响应,并且随后将被Timeouthandler清除。 最近,我们面临着一些CPU高峰和ESB抛出的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>

如果您的端点未返回任何响应,您如何确定它是否处于活动状态?

如果端点对任何类型的请求有任何类型的响应,则您可以使用第一个“呼叫”调解器检查端点可用性,然后使用具有OUT_ONLY属性的发送调解器进行更复杂的调解。 您可以使用切换介体来评估“呼叫”介体的结果,并为该介体设置非常短的超时,以使吞吐量可以接受,即使第一个端点不可访问。 这不是一个理想的解决方案,但它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM