2017-08-05 114 views
1

Amqp代理具有允许保证传递的持久性设置 - 但只有在消息实际到达代理时才有效。如果出现网络故障并且随后的客户端崩溃/重新启动消息可能丢失。在rabbitmq或activemq或其他客户端(生产者)的消息框架中是否有某种方式将消息保存到磁盘,以便在客户端崩溃或重新启动时,任何未发送的消息都不会丢失?客户端队列持久性

我已经看到人们在本地运行经纪人以解决此问题。这似乎是不必要的工作量,尤其是如果您对客户端的部署没有太多的控制权。

回答

1

在现实中,你已经很好地回答了你自己的问题。许多寻找客户端持久性的人转向嵌入式经纪人,因为它实际上是一个非常好的解决方案。拥有可存储和转发的本地代理可为您提供比每个客户端内置的持久层更多的灵活性,所有本地客户端都可以共享一个代理实例,以便在需要时可以根据需要移动存储由于无法预料的远程停机时间,存储的本地消息正在建立。

当然有一些客户端实现提供存储,但是找到一个取决于您选择的代理/协议,当然您愿意掏钱购买支持或许可,如果客户碰巧不是来自说开源实现。 MQTT Paho客户端与其他人一样,我认为有一个本地存储选项。