2013-10-22 117 views
1

我試圖理解通道和連接的概念在RabbitMQ,我的理解是在一個高層次,一個連接是經紀人爲TCP socket實現真正的連接,渠道是虛擬連接使用理智的實際連接進行通信。所以通道通過相同的連接進行復用。RabbitMQ的通道和連接

但是在低級別的情況下,TCP sockets是不是阻塞?我讀過使用多個連接不會提高性能,爲什麼不呢?當一個頻道使用連接時,我想象這些電話是正確的序列化的?所以不會有多個連接允許我更快地發送和接收數據。

我知道我錯過了這裏的東西,所以這就是爲什麼我要求澄清。

謝謝。

回答

1

服務器或客戶端是否使用非阻塞套接字是實現細節。需要高性能的實現可能使用非阻塞套接字;但例如RabbitMQ服務器使用通常的輕量級Erlang過程模型來實現併發。

您可以自由使用多個AMQP連接 - 儘管在大多數情況下,您應該可以使用一個連接和多個通道。 TCP具有相對高的開銷,並且在TCP連接之上覆用信道減少了這種開銷。