JMS 消息的 Wildfly 跨站点复制

Wildfly cross site replication for JMS messages

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

我们有两个站点,一个在东海岸处于活动状态,一个在西海岸是热备份/故障转移站点,每个站点在集群中有两台 'standalone' jboss 服务器。我们正在使用目前由 mysql 支持的嵌入式消息传递和 mysql 复制来保持备份站点同步,以防我们需要进行故障转移。

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

那么 - 当我们故障转移到我们的其他站点时,我们如何最大程度地保留队列中的 JMS 消息。

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

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

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

最后,值得注意的是 JGroups 集成仅适用于代理 discovery。它不用于经纪人与经纪人之间的通信。