我正在尝试使用ActiveMQ创建可靠的JMS环境。我打算采用JDBC主从集群方法,在这种方法中我可以将主服务器收到的消息保存到数据库,从服务器可以选择这些消息并在主服务器死机时运行它们。但是我没有解决主人和奴隶都失败的情况(由于任何原因)。如果发生这种情况,生产者发送的消息会永远丢失吗?我可以做一些事情,比如将消息保存到数据库并在其中一个JMS服务器恢复后执行它们,但有没有更好/内置的解决方案来处理这种情况?
答案 0 :(得分:2)
我可以做一些事情,比如将消息保存到数据库并执行 他们在其中一个JMS服务器恢复后,但是有一个 更好/内置的解决方案来处理这种情况?
你有正确的想法。如果生产者无法连接,在正常情况下,它会抛出异常。你想要一个存储转发(SAF)生产者;如果客户端无法到达目的地,则消息将本地存储在客户端文件系统中,并在客户端与代理重新连接时发送。
根据以下的评论,似乎ActiveMq支持store-and-forward使用本地存储为客户端我已经要求他们提交他的评论作为答案。