RabbitMQ频道和连接

时间:2013-10-22 10:43:39

标签: sockets tcp rabbitmq amqp

我试图理解RabbitMQ中频道和连接的概念,我在高级别中理解它,连接是实现为{{1}的实际连接对于代理,频道是使用理智的真实连接进行通信的虚拟连接。因此,通道通过相同的连接进行多路复用。

然而,在低级别如何实现,TCP socket是非阻塞的?我已经读过使用多个连接不会提高性能为什么不呢?当一个频道使用连接时,我想这些电话是序列化的吗?因此,多个连接不允许我更快地发送和接收数据。

我知道我在这里遗漏了一些东西,这就是我要求澄清的原因。

感谢。

1 个答案:

答案 0 :(得分:1)

服务器或客户端是否使用非阻塞套接字是一个实现细节。需要高性能的实现可能使用非阻塞套接字;但是例如RabbitMQ服务器使用通常的轻量级Erlang进程模型来实现并发。

您可以自由使用多个AMQP连接 - 但在大多数情况下,您应该使用一个连接和多个通道。 TCP具有相对较高的开销,并且TCP连接之上的复用信道减少了这种开销。