java - JMS 可靠性,处理服务器停机

标签 java jms activemq reliability

我正在尝试使用 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/

相关文章:

java - MessageConsumer.receive() 不删除消息

java - RxJava2 上的 MVP。何时使用它

java - org.apache.activemq.broker.TransportConnection serviceTransportException 警告 : java. io.EOFException

java - 运行jms队列时,生产者发送消息,消费者获取消息,但消息不显示

java - 新创建的客户端是否知道 hornetq 中的旧消息?

java - 如何在 JMS 队列中搜索特定消息

java - Apache ActiveMQ 在多个消费者上的异常行为

java - Java Web 服务中的单例对象

java - 如何创建 "or"语句

java - 按大小对文件流进行排序