【问题标题】:WSO2 ESB to Message Broker failoverWSO2 ESB 到 Message Broker 故障转移
【发布时间】:2016-10-09 14:38:56
【问题描述】:

我有 WSO2ESB 集群(ESB1 和 ESB2 工作者),我正在使用共享数据库 MSSQL(MB1 和 MB2 代理)配置 WSO2MB 集群。 ESB 服务器将从 WSO2MB 集群中的代理写入和读取消息。 我想要实现的是 ESB1 将向代理 MB1 读/写消息,而 ESB2 将向代理 MB2 读/写消息。例如,在 MB2 发生故障的情况下,两个 ESB 服务器都会将消息读/写到 MB1。在文档中我只看到循环版本的故障策略,这意味着 ESB 服务器将随机连接到 MB 代理。有单一代理策略,但它适用于我的情况还是我必须实现自己的 FailoverMethod 接口?我需要基于优先级或权重的故障转移策略,我只在 ActiveMQ 中看到。 感谢您的回复。

【问题讨论】:

    标签: wso2 cluster-computing wso2esb failover wso2mb


    【解决方案1】:

    循环不是连接到经纪人的随机算法。它将以broker list 中的给定顺序从头到尾对代理进行优先级排序。通过可配置的“循环计数”、“重试次数”、“连接延迟”属性,您还可以最大限度地减少对低优先级代理的重试。即使 wso2 mb 目前没有加权故障转移策略,您也可以尝试通过上述配置实现类似的行为。

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

    【讨论】:

    • 是的,我们分析了故障转移接口的源代码,它的工作方式与您提到的一样。现在唯一的问题是 - 当 MB1 恢复运行时,故障转移是否会在一段时间后切换到它?换句话说,每次交易后连接是否会重置并再次检查代理列表?在我的示例中,MB1 已关闭,因此循环策略切换到 MB2,在 MB1 再次启动后,我们需要 ESB1 再次使用它。
    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多