RabbitMQ 是消息中间件的一种,实现了 AMQP 标准。
特性:
- 确认机制:消息发送确认、消息消费确认
- 持久化:消息持久化、队列持久化
对于 RabbitMQ 来说,除了生产者、消息队列、消费者这三个基本模块以外,还添加了 交换机 (Exchange) 模块。它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列。
交换机的主要作用是接收相应的消息并且绑定到指定的队列,有三种类型的交换机:
交换机 | 说明 |
---|---|
direct | 默认的交换机 (一对一)。即创建消息队列的时候,指定一个BindingKey,当生产者发送消息的时候,指定对应的Key,当Key和消息队列的BindingKey一致的时候,消息将会被发送到该消息队列中。 |
fanout | 路由广播的形式,将会把消息发给绑定它的全部队列,即便设置了key,也会被忽略。生产者其实仅关注Exchange与Route Key, 消费者仅关注Queue |
topic | Topic转发信息主要是依据通配符,队列和交换机的绑定主要是依据一种模式(通配符+字符串),而当发送消息的时候,只有指定的Key和该模式相匹配的时候,消息才会被发送到该消息队列中。 |