我正在尝试使用 ActiveMQ 创建一个可靠的 JMS 环境。我计划采用 JDBC 主从集群方法,在该方法中,我可以将主服务器收到的消息保存到数据库,从服务器可以选择这些消息并运行它们,以防主服务器挂掉。但我没有解决主站和从站都宕机(由于任何原因)的情况。如果发生这种情况,生产者发送的消息会永远丢失吗?我可以做一些事情,比如将消息持久保存到数据库并在其中一台 JMS 服务器恢复后执行它们,但是是否有更好/内置的解决方案来处理这种情况?
最佳答案
I can do something like persisting messages to database and executing them after one of the JMS servers recover, but is there a better/built-in solution to handle such scenarios?
你的想法是正确的。如果生产者无法连接,正常情况下会抛出异常。您需要一个存储转发 (SAF) 生产者;如果客户端无法到达目的地,消息将存储在客户端文件系统本地,并在客户端与代理重新连接时发送。
根据下面的评论,ActiveMq 似乎支持 store-and-forward为客户使用本地存储我已要求 nos 提交他的评论作为答案。
关于java - JMS 可靠性,处理服务器停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20435301/