2
如果對於一個客戶端,它建立一個連接,並在此連接中創建兩個通道。 它開始通過第一個頻道發送一條大消息(5MB)到rabbitmq的交換機。網絡的速度很低,例如每秒100kb。一秒鐘後,它開始通過第二個通道發送另一個小消息(10kb)到另一個rabbitmq的交換機。一個連接,兩個通道。大消息
在第一條消息(5MB)完成之前,第二條消息(10kb)是不會發送任何字節的?
如果對於一個客戶端,它建立一個連接,並在此連接中創建兩個通道。 它開始通過第一個頻道發送一條大消息(5MB)到rabbitmq的交換機。網絡的速度很低,例如每秒100kb。一秒鐘後,它開始通過第二個通道發送另一個小消息(10kb)到另一個rabbitmq的交換機。一個連接,兩個通道。大消息
在第一條消息(5MB)完成之前,第二條消息(10kb)是不會發送任何字節的?
消息被拆分成幀,並且來自不同通道的幀可以在同一個連接上被交織。這意味着您的第二個(較小)消息不必等待第一個完成,5MB消息被拆分爲幾個幀(給定RabbitMQ的默認最大幀大小爲128KB),並且發送這兩個消息的幀將交錯。
確保每個連接即使有多個通道也只能一次發送一條消息 – robthewolf