名词解释 本节介绍了分布式消息服务RabbitMQ产品常见的名词解释。 Vhost 虚拟主机(Virtual Host),类似于 Namespace 命名空间的概念,逻辑隔离,每个用户里可以创建多个 Vhost,每个 Vhost 可以创建若干个 Exchange 和 Queue。 Queue 消息队列,每个消息都会被投入到一个或者多个 Queue 里。 Producer 消息生产者,即投递消息的程序。 Consumer 消息消费者,即接受消息的程序。 Connection TCP 连接,Producer 或 Consumer 与消息队列间的物理 TCP 连接。 Connection将应用与分布式消息服务RabbitMQ连接在一起。Connection会执行认证、IP解析、路由等底层网络任务。应用与分布式消息服务RabbitMQ建立Connection需要多个TCP报文交互,因而会消耗较多的网络资源和分布式消息服务RabbitMQ资源。大量的Connection会对分布式消息服务RabbitMQ造成巨大压力,甚至触发分布式消息服务RabbitMQ SYN洪水攻击防护,导致分布式消息服务RabbitMQ无响应,进而影响业务。 Channel 在客户端的每个物理 TCP 连接里,可建立多个 Channel,每个 Channel 代表一个会话任务。 Channel是物理TCP连接中的虚拟连接。当应用通过Connection与分布式消息服务RabbitMQ建立连接后,所有的AMQP协议操作(例如创建队列、发送消息、接收消息等)都会通过Connection中的Channel完成。Channel可以复用Connection,即一个Connection下可以建立多个Channel。Channel不能脱离Connection独立存在,而必须存活在Connection中。当某个Connection断开时,该Connection下的所有Channel都会断开。当大量应用需要与分布式消息服务RabbitMQ建立多个连接时,建议您使用Channel来复用Connection,从而减少网络资源和分布式消息服务RabbitMQ资源消耗。 Connection和Channel的使用建议 保持Connection长连接,请勿频繁开启或关闭Connection。如果确实需要频繁开启或关闭连接,请使用Channel。 一个进程对应一个Connection,一个进程中的多个线程则分别对应一个Connection中的多个Channel。 Producer和Consumer分别使用不同的Connection进行消息发送和消费。