This topic describes the connection and channel concepts in Message Queue for RabbitMQ and provides some suggestions on their usage.
A connection refers to a physical Transmission Control Protocol (TCP) connection. Connections are established between applications and Message Queue for RabbitMQ. Connections can be used to support underlying network tasks, such as authentication, IP address resolution, and routing. The establishment of a connection between an application and Message Queue for RabbitMQ requires about 15 TCP packets for interaction, which consume a large number of network resources and Message Queue for RabbitMQ resources. A large number of connections may cause great pressure on Message Queue for RabbitMQ or even trigger protection against SYN flood attacks. In this case, Message Queue for RabbitMQ may fail to respond, and your business is affected.
A channel refers to a virtual connection that is established based on a physical TCP connection. All AMQP-based operations are performed over the channels of a connection between an application and Message Queue for RabbitMQ. For example, queues are created over channels, and messages are sent and received over channels. Each connection can have multiple channels. Channels are dependent on connections. After a connection is closed, all the channels of the connection are also closed. If you need to connect a large number of applications to Message Queue for RabbitMQ, we recommend that you establish multiple channels for one connection instead of establishing a large number of connections. This reduces the usage of network resources and Message Queue for RabbitMQ resources.
Pay attention to the following suggestions on the usage of connections and channels:
- Use persistent connections. Do not frequently open or close a connection. You can frequently open or close a channel. For more information about the limits on the interfaces that are used to open connections and channels on a single instance, see Limits.
- Each process corresponds to a connection, and the threads of a process have a one-to-one mapping onto the channels of a connection.
- Producers and consumers use different connections to send and consume messages.