2017-08-05 115 views
1

Amqp代理具有允許保證傳遞的持久性設置 - 但只有在消息實際到達代理時纔有效。如果出現網絡故障並且隨後的客戶端崩潰/重新啓動消息可能丟失。在rabbitmq或activemq或其他客戶端(生產者)的消息框架中是否有某種方式將消息保存到磁盤,以便在客戶端崩潰或重新啓動時,任何未發送的消息都不會丟失?客戶端隊列持久性

我已經看到人們在本地運行經紀人以解決此問題。這似乎是不必要的工作量,尤其是如果您對客戶端的部署沒有太多的控制權。

回答

1

在現實中,你已經很好地回答了你自己的問題。許多尋找客戶端持久性的人轉向嵌入式經紀人,因爲它實際上是一個非常好的解決方案。擁有可存儲和轉發的本地代理可爲您提供比每個客戶端內置的持久層更多的靈活性,所有本地客戶端都可以共享一個代理實例,以便在需要時可以根據需要移動存儲由於無法預料的遠程停機時間,存儲的本地消息正在建立。

當然有一些客戶端實現提供存儲,但是找到一個取決於您選擇的代理/協議,當然您願意掏錢購買支持或許可,如果客戶碰巧不是來自說開源實現。 MQTT Paho客戶端與其他人一樣,我認爲有一個本地存儲選項。