我正在MQ Light中確保交付。在MQ Light中重新發送行爲
我正在使用Node-RED和修改後的mqlight輸入節點。我加入下列選項的認購()調用:
qos: mqlight.QOS_AT_LEAST_ONCE, autoConfirm: false, ttl: (60 * 60 * 24 * 1000)
這就要求我打電話delivery.message.confirmDelivery()確認到MQ光收到的消息。
下面的截圖是當mqlight_NodeREDClient的訂閱設置爲autoConfirm爲false時,收到一條消息,但沒有調用delivery.message.confirmDelivery()。這是爲了模擬Node-RED流程中發生的某種錯誤。
因爲我已經修改了Node-RED流程來執行confirmDelivery(),並且流程現在消耗的所有消息都被確認了,即使Node-RED在發佈時沒有運行。該消息由MQ Light保存,因爲目標上有一個TTL,並在我再次啓動Node-RED時立即到達。
但是,這個屏幕截圖中的消息已經發送過一次,但從未確認過,不會再發送。重新啓動Node-RED不會改變這一點,消息仍然未決。爲了讓MQ Light重新發送之前已發送但未被客戶確認的消息,需要滿足哪些標準?
幾個小時後,消息從UI中消失,不幸的是,我沒有在NodeRED端記錄任何東西,所以我無法分辨它是否真的通過了。現在我已經完成了一些更多的測試,並獲得了我所期望的行爲。我會做一些更多的實驗,看看我能否重現它。 –