首页 > 解决方案 > JMS 消息的 Wildfly 跨站点复制

问题描述

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

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

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

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

标签: wildflyactivemq-artemis

解决方案


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

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

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

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


推荐阅读