如何解决用于 JMS 消息的 Wildfly 跨站点复制
我们有一个运行在 JBoss 4 上的内部系统,我们希望将其升级到 Wildfly 21,因为我们不能永远停留在过去。
我们有两个站点,一个位于东海岸,一个位于西海岸,一个是热备份/故障转移站点,每个站点在一个集群中有两个“独立”的 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 认证所必需的),因此不清楚它永远是否支持像镜像代理连接这样的高级功能。您最好配置一个独立的 ActiveMQ Artemis 实例,因为它可以提供最大的灵活性。
最后,值得注意的是 JGroups 集成仅用于代理发现。它不用于经纪人到经纪人的通信。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。