简介:
RabbitMQ是一套开源(MPL)的消息队列服务软件,使用Erlang语言开发的开源消息队列系统;用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现很出色。
模型:P为消息的发送者(生产者),K为交换机,Q为消息队列,C接收消息(消费者)。
工作原理:
生产者producter通过信道channel发送消息给交换机Exchange,交换机创建时需要指定类型(直接Direct,扇出Fanout ,主题Topic ,消息头Headers),然后交换机根据消息的属性把消息分发到不同的队列Queue中,等待消费者Consumer的消费。
关键词概念:
生产者(Producter):消息的发送者。
连接(Connection):连接MQ和应用服务器的TCP连接。
信道(Channel):发送和接收消息的虚拟通道。
代理(Broker):消息接收与分发的应用,RabbitMQ Server为一个Message Broker。
交换机(Exchange):RabbitMQ分发器,根据不同的策略将消息分发到相关的队列。
队列(Queue):缓存消息的容器或者缓存。
绑定(Binding):设置交换机与队列的关系。
路由键(Routing Key):提供交换机查看并根据键来决定如何分发消息到队列的一个键,路由键可以说成消息的目的地址。
虚拟主机(Virtual host):RabbitMQ支持权限控制,但是最小粒度为虚拟主机。一个虚拟主机可以包含多个交换机、队列、绑定。
模式介绍:
simple模式:不需要交换机,直连模式,一个队列只有一个消费者。
work模式:一个队列多个消费者。
direct模式:需要交换机,通过交换机的路由key,精确匹配queue,并发送到对应的queue。
topic模式:通过路由与路由key,模糊匹配的模式,可用通配符。比如key.1会被绑定的路由key.*的queue获取到。
fanoout模式:广播模式。不需要路由key,给所有绑定到交换机的queue。