RabbitMQ是开源代理和队列服务器,使用Erlang编写,是基于AMQP协议的;AMQP是高级消息队列协议
RabbitMQ架构
- Publisher:消息发布者(生产者),向交换器发送消息
- Exchange:交换器,用来接收生产者发送的消息并将这些消息路由给队列
- Binding:绑定,用于消息队列和交换器之间的关联。
- Queue:消息,用来保存消息直到发送给消费者
- Connection:网络连接如TCP连接
- Channel:信道,双向数据流通道,多路复用连接
- Consumer:消费者,从消息队列中取得消息
Exchange类型
Exchange分发消息根据类型的不同分发策略也有所不同,Exchange3种类型:
- Direct(键分发):消息中的路由键(routing key)如果和Binding中的bindingkey一致,交换器就将消息发送到对应的队列。它是完全匹配单播的。
- Fanout(广播分发):每个发送到fanout类型的交换机的消息都会分发到所有绑定的队列上去。该类型转发消息是最快的
- Topic:通过模式匹配分配消息。将路由键与某个模式进行匹配,此时队列需要绑定到某个模式上。