添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文介绍 云消息队列 RabbitMQ 版 中Connection和Channel的概念及其使用建议。

Connection

Connection是物理TCP连接。Connection将应用与 云消息队列 RabbitMQ 版 连接在一起。Connection会执行认证、IP解析、路由等底层网络任务。应用与 云消息队列 RabbitMQ 版 完成Connection建立大约需要15个TCP报文交互,因而会消耗大量的网络资源和 云消息队列 RabbitMQ 版 资源。大量的Connection会对 云消息队列 RabbitMQ 版 造成巨大压力,甚至触发 云消息队列 RabbitMQ 版 SYN洪水攻击防护,导致 云消息队列 RabbitMQ 版 无响应,进而影响您的业务。

dg_connection

Channel

Channel是物理TCP连接中的虚拟连接。当应用通过Connection与 云消息队列 RabbitMQ 版 建立连接后,所有的AMQP协议操作(例如创建队列、发送消息、接收消息等)都会通过Connection中的Channel完成。Channel可以复用Connection,即一个Connection下可以建立多个Channel。Channel不能脱离Connection独立存在,而必须存活在Connection中。当某个Connection断开时,该Connection下的所有Channel都会断开。当大量应用需要与 云消息队列 RabbitMQ 版 建立多个连接时,建议您使用Channel来复用Connection,从而减少网络资源和 云消息队列 RabbitMQ 版 资源消耗。

dg_channel

使用建议

  • 保持Connection长连接,请勿频繁开启或关闭Connection。如果确实需要频繁开启或关闭连接,请使用Channel。单实例开启Connection或Channel的接口限制,请参见 使用限制

  • Connection数量较少而消费的数据量较大时,可能会出现消费倾斜问题,您可以在保证每个消费者Connection数一致的同时,增加每个消费者的Connection数或增加消费者数量。建议所有消费者的Connection之和大于30。

  • 多个进程可以共享同一个Connection,共享时请不要频繁建立和关闭Connection,否则可能会出现 ChannelNotFind 错误。

  • Producer和Consumer分别使用不同的Connection进行消息发送和消费。