1. 程式人生 > >轉: RabbitMQ實現中AMQP與MQTT消息收發異同

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

開始 離線消息 現象 交換機 .html rabbit uci log www.

轉自:http://www.cnblogs.com/lucifer1997/p/9438186.html

實現了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讀取消息(不知道對不對)。

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