RabbitMQ實現中AMQP與MQTT消息收發異同


實現了AMQP與MQTT(至多一次)后,用多個隊列以topic exchange的方式用相同交換機監聽同一個主題(topic),發現情況存在不同,覺得有點意思,所以記錄了下來。

 

用2個MQTT(分別記作A、B)、2個AMQP(分別記作C、D)同時監聽一個topic,

然后向這個topic先以MQTT的方式發送4條消息(分別記作1、2、3、4),

再以AMQP方式發送4條消息(分別記作5、6、7、8),

結果如下:

A:1、2、3、4、5、6、7、8;

B:1、2、3、4、5、6、7、8;

C:1、3、5、7;

D:2、4、6、8。

說明AMQP與MQTT發送封裝后大致相同,而接收存在差異。

AMQP以輪詢的方式接收消息,而MQTT則能全部接收。

 

當我繼續探究兩者之間是否存在相互影響時,我又發現了一些有趣的現象:

1、當AMQP與MQTT同時在線時,兩邊之間互不影響。

2、當僅有AMQP在線時收到消息,然后一個MQTT開始監聽,MQTT收不到消息。

3、當僅有MQTT在線時收到消息,然后一個AMQP開始監聽,AMQP能收到消息。

 

根據2、3我推出:MQTT無法讀取隊列中的離線消息,在線讀取后不會刪除隊列消息;而AMQP能讀取隊列中的離線消息,讀取消息后會刪除消息。

然后根據1,我推測MQTT先於AMQP讀取消息(不知道對不對)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM