2016-10-06 51 views
0

我有WSO2ESB群集(ESB1和ESB2 worker),并且正在配置带有共享数据库MSSQL(MB1和MB2代理程序)的WSO2MB群集。 ESB服务器将写入和读取WSO2MB集群中代理的消息。 我想要实现的是ESB1将读/写消息给代理MB1,而ESB2将读/写消息给代理MB2。在例如MB2失败的情况下,两个ESB服务器将读/写消息到MB1。在文档中,我只看到循环版本的失败策略,这意味着ESB服务器将随机连接到MB代理。有单点经纪策略,但适用于我的情况,或者我必须实施自己的FailoverMethod界面?我需要优先级或基于权重的故障转移策略,我只能在ActiveMQ中看到。 Thnx任何答复。WSO2 ESB到消息代理程序故障转移

回答

0

循环法不是连接到经纪人的随机算法。它将从第一到最后以broker list的顺序优先考虑经纪商。通过可配置的“循环计数”,“重试”,“连接延迟”属性,您可以最大限度地减少对低优先级经纪人的重试次数。尽管wso2 mb目前没有加权故障转移策略,但您可以尝试通过上述配置实现类似行为。

就我所了解的2节点Broker集群(在您的用例中),优先级代理(加权故障切换策略)不是有效的情况。例如,如果MB1关闭,则只有可用的故障切换选项为MB2,反之亦然。如果您不想将ESB1连接到MB2(而MB1不可用),只需从ESB1的“jndi.properties”文件中的代理列表中删除MB2的连接URL。此外,您需要更改MB1代理网址中的“循环计数”,“重试”,“连接延迟”,以便重试,直到MB1再次可用。因此,这种用例可以通过“循环”策略轻松实现。

+0

是的,我们分析了故障转移接口的源代码,并按照您提到的方式工作。现在唯一的问题是 - 当MB1恢复正常时,故障切换会在一段时间后切换到它?换句话说,每次交易后连接都会重置并再次检查经纪人列表?在我的示例中,MB1处于关闭状态,因此循环策略切换到MB2,并且在MB1重新启动后,我们需要ESB1再次处理它。 –