【问题标题】:Wildfly cross site replication for JMS messagesJMS 消息的 Wildfly 跨站点复制
【发布时间】:2021-05-31 10:20:29
【问题描述】:

我们有一个在 JBoss 4 上运行的内部系统,我们希望升级到 Wildfly 21,因为我们不能永远停留在过去。

我们有两个站点,一个位于东海岸,一个位于西海岸,一个是热备份/故障转移站点,每个站点在一个集群中有两个“独立”jboss 服务器。我们正在使用当前由 mysql 支持的嵌入式消息传递和 mysql 复制来保持备份站点同步,以防我们需要故障转移。

使用 wildfly,JMS 消息不会存储在数据库中,因此我们的 sql 复制将无济于事。我看到 Artemis 中有 ha-policy,并且在 jgroups 中有中继用于跨站点通信,但我没有找到任何将它们链接在一起或解释如何处理的文档。

那么 - 当我们故障转移到我们的其他站点时,我们如何尽最大努力将 JMS 消息保留在队列中。

【问题讨论】:

    标签: wildfly activemq-artemis


    【解决方案1】:

    ActiveMQ Artemis(嵌入到 WildFly 中的消息代理,提供 JMS 实现)确实支持 JDBC,因此如果您愿意,您仍然可以使用 MySQL(及其备份复制)。

    但是,使用基于文件的日志实现的性能要好得多。如果您使用基于文件的日志,您可以使用 ceph 之类的工具复制日志数据,或者您可以使用 "broker connection" 将您的代理镜像到备份站点。

    需要明确的是,我不能 100% 确定 WildFly 支持配置镜像代理连接。这是 ActiveMQ Artemis 中相对较新的功能,WildFly 为嵌入式代理维护自己的配置层。此外,由于 WildFly 仅使用 ActiveMQ Artemis 来提供 JMS 实现(Java/Jakarta EE 认证所必需的),因此不清楚它是否会支持镜像代理连接等高级功能。您最好配置一个独立的 ActiveMQ Artemis 实例,因为它将提供最大的灵活性。

    最后,值得注意的是,JGroups 集成仅适用于代理发现。它不用于代理到代理的通信。

    【讨论】:

    • 我花了很多时间研究activemq.apache.org/components/artemis/documentation/1.0.0/…,特别是基于网络的数据复制。您能否对比这三个选项(块级复制、镜像代理和 ha-policy 备份?)
    • 您链接的文档很旧,因为它来自版本1.0.0(请注意网址中的 1.0.0 )。您应该使用更多最新的文档(例如我在答案中链接的内容)。至于对比选项......这是我可以做的事情,但这应该是一个新问题,而不是在这里的 cmets 所做的事情。
    • 尽管 URL 中的 1.0.0 页面较新,因为它引用了 Artemis 2.3“在 2.3 版中添加了对基于网络的数据复制的支持”。无论如何,这是最新的:activemq.apache.org/components/artemis/documentation/latest/…
    • 实际上这是 1.0.0 文档中的一个错误。您引用的关于“2.3 版”的部分引用的是 HornetQ 2.3,而不是 Artemis 2.3。 ActiveMQ Artemis 基于捐赠给 Apache ActiveMQ 项目的 HornetQ。您会注意到,此引用已在以后的版本中删除。
    • 好的,根据您的建议,我打开了另一个问题:stackoverflow.com/questions/66443784/…
    猜你喜欢
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2015-10-07
    • 2016-02-10
    • 1970-01-01
    • 2020-04-05
    • 2018-09-29
    相关资源
    最近更新 更多