在RabbitMQ

时间:2017-02-14 13:38:33

标签: java rabbitmq

我们正在使用两个RabbitMQ节点的集群,我们正在使用RabbitMQ Java驱动程序与节点进行交互。我们正在使用“头”交换,它根据头绑定和持久队列将消息传输到队列。

问题是,为一个节点定义了队列。如果此节点由于某种原因而崩溃,则应该到达此节点的队列中的消息将丢失。

有没有办法告诉RabbitMQ在检测到另一个拥有它们的节点无法访问时更改队列主节点,因此,确保将消息传输到队列?并在节点再次启动时恢复消息?

目前,我们正在使用高可用队列来解决此问题,但性能非常糟糕。我们不需要它提供的镜像功能,因为我们只能在节点再次出现时恢复消息

1 个答案:

答案 0 :(得分:1)

您需要messages persistentdelivery_mode设置为2并声明队列持久。这样,当重新启动节点并保存消息时,队列就会返回。更多the second tutorial。实际上我没有在教程中看到如何在java中,但它是there in phyton,所以你需要查找javadoc,可能也是'publish'方法中的参数。