1

我试图理解通道和连接的概念RabbitMQ,我在高层理解它,连接TCP socket针对代理实现的真实连接,通道是使用健全的真实连接进行通信的虚拟连接。因此,通道通过相同的连接进行多路复用。

但是在低级别这是如何实现的,TCP sockets是非阻塞的吗?我读过使用多个连接不会提高性能,为什么不呢?当一个通道使用连接时,我想这些调用是序列化的吗?因此,多个连接不会让我更快地发送和接收数据。

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

谢谢。

4

1 回答 1

1

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

您可以自由使用多个 AMQP 连接——尽管在大多数情况下,您应该擅长一个连接和多个通道。TCP 的开销相对较高,在 TCP 连接之上多路复用通道可以减少这种开销。

于 2013-10-30T19:39:37.757 回答