Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我试图理解通道和连接的概念RabbitMQ,我在高层理解它,连接是TCP socket针对代理实现的真实连接,通道是使用健全的真实连接进行通信的虚拟连接。因此,通道通过相同的连接进行多路复用。
RabbitMQ
TCP socket
但是在低级别这是如何实现的,TCP sockets是非阻塞的吗?我读过使用多个连接不会提高性能,为什么不呢?当一个通道使用连接时,我想这些调用是序列化的吗?因此,多个连接不会让我更快地发送和接收数据。
TCP sockets
我知道我在这里遗漏了一些东西,所以这就是我要求澄清的原因。
谢谢。
服务器或客户端是否使用非阻塞套接字是一个实现细节。需要高性能的实现可能使用非阻塞套接字;但是例如 RabbitMQ 服务器使用通常的轻量级 Erlang 进程模型来实现并发。
您可以自由使用多个 AMQP 连接——尽管在大多数情况下,您应该擅长一个连接和多个通道。TCP 的开销相对较高,在 TCP 连接之上多路复用通道可以减少这种开销。