[英]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.