Amqp代理具有允许保证传递的持久性设置 - 但这仅在消息实际到达代理时才有效。如果网络出现故障,则后续客户端崩溃/重新启动消息可能会丢失。在rabbitmq或activemq或其他一些消息框架中是否有某种方法可以让客户端(生产者)将消息持久保存到磁盘,以便在客户端崩溃或重新启动时,任何未发送的消息都不会丢失?
我见过人们在本地经营经纪人以解决这个问题。这似乎是一项不必要的工作量,特别是如果您无法控制客户端的部署。
答案 0 :(得分:1)
实际上,你已经很好地回答了自己的问题。许多寻求客户端持久性的人转向嵌入式代理,因为它实际上是一个非常好的解决方案。拥有可以存储和转发的本地代理比每个客户端中的内置持久层提供更多的灵活性,所有本地客户端可以共享一个代理实例,这可以允许您根据需要移动存储,以防您发现由于无法预见的远程停机,存储的本地消息正在建立。
当然有一些客户端实现提供存储但找到一个取决于您选择的经纪人/协议,当然您愿意花钱购买支持或许可如果该客户碰巧不是来自开放源实现。我认为MQTT Paho客户端与其他客户端一样具有本地存储选项。