wildfly - JMS 消息的 Wildfly 跨站点复制
问题描述
我们有一个在 JBoss 4 上运行的内部系统,我们希望升级到 Wildfly 21,因为我们不能永远停留在过去。
我们有两个站点,一个在东海岸活动,一个在西海岸作为热备份/故障转移站点,每个站点在一个集群中有两个“独立”jboss 服务器。我们正在使用当前由 mysql 支持的嵌入式消息传递和 mysql 复制来保持备份站点同步,以防我们需要故障转移。
使用 wildfly,JMS 消息不会存储在数据库中,因此我们的 sql 复制将无济于事。我看到 Artemis 中有 ha-policy,并在 jgroups 中进行了跨站点通信中继,但我还没有找到任何将它们链接在一起或解释如何处理的文档。
那么 - 当我们故障转移到我们的其他站点时,我们如何尽最大努力将 JMS 消息保留在队列中。
解决方案
ActiveMQ Artemis(嵌入到 WildFly 中的消息代理,提供 JMS 实现)确实支持 JDBC,因此如果您愿意,您仍然可以使用 MySQL(及其备份复制)。
但是,使用基于文件的日志实现的性能要好得多。如果您使用基于文件的日志,您可以使用 ceph 之类的东西复制日志数据,或者您可以使用“代理连接”将您的代理镜像到备份站点。
需要明确的是,我不是 100% 确定 WildFly 支持配置镜像代理连接。这是 ActiveMQ Artemis 中相对较新的功能,WildFly 为嵌入式代理维护自己的配置层。此外,由于 WildFly 仅使用 ActiveMQ Artemis 来提供 JMS 实现(Java/Jakarta EE 认证所必需的),因此尚不清楚它是否会支持镜像代理连接等高级功能。您可能最好配置一个独立的 ActiveMQ Artemis 实例,因为它将提供最大的灵活性。
最后,值得注意的是 JGroups 集成仅用于代理发现。它不用于代理到代理的通信。
推荐阅读
- r - svg 设备、表达式()和 unicode 字符的问题
- stm32 - SIM800l - 禁用“短信就绪”和“呼叫就绪”未经请求的消息
- html - 如何制作一个改变整个屏幕背景的div
- python - AttributeError:'str'对象在python 2中没有属性'append'
- python - 解析waf日志获取主机ip防止dos攻击
- javascript - 本地文件的 XML Http GET 请求不断取消
- mysql - MySQL DATE 行为和结果问题
- python - 为什么 Menubutton 在此代码中不起作用?
- python - 为什么在熊猫中使用“==”返回一个系列而不是布尔?
- r - 将函数多次应用于新数组