RabbitMQ基本概念
RabbitMq简介
AMQP,即Adcanced Message Queuing Protocol(高级消息队列),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同的产品,不同的开发语言等条件限制。
RabbitMq基础架构
Borker:接收和分发消息的应用,RabbitMq server就是MessageBorker
Virtual host:出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟分组中,类似网络中的nemespace概念。当多个不同的用户使用同一个RabbitMq Server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等
Connection:publisher/consumer和borker之间的tcp连接
Channel:如果每次访问RabbitMq都建立一个Connection,在消息量大的时候建立TCP Connection的开销巨大,效率也低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯。AMQP method包含channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection极大减小了操作系统建立TCP connection的开销
Exchange:message到达的第一站,根据分发的规则,匹配查询表中的routing key ,分发消息到queu中。常用的类型有,direct(point-to-point),topic(publish-subscribe) and fanout(multicast)
Queue: 消息最终被送到这里等待consumer取走
** Binfing**: exchage和queue之间的虚拟连接,binding中可以包含routing key.Binding信息被保存到exchange的查询表中,用于message的分发一句