【RabbitMQ】RabbitMQ简介
文章目录
一、RabbitMQ
(一) 消息系统
消息系统通过将消息的发送和接收分离来实现应用程序的异步和解耦。
(二) RabbitMQ
RabbitMQ是一个消息代理,一个消息系统的媒介。
- 提供多种技术(包括持久性机制、投递确认、发布者证实和高可用性机制)可以让你在性能和可靠性之间进行权衡。
- 为典型的路由逻辑提供了多种内置交换机类型。
二、AMQP协议
(一) AMQP —— 高级消息队列协议
AMQP(高级消息队列协议)是一个网络协议。它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信。
(二) 消息代理
消息代理从发布者/生产者处接收消息,并根据既定的路由规则把接收到的消息发送到消费者处进行消息处理。
(三) AMQP 0-9-1模型
- **消息(message)**被 发布者(publisher) 发送给 交换机(exchange);
- 交换机(exchange) 将收到的消息根据路由规则分发给绑定的队列(queue);
- AMQP代理会将 消息(message) 投递给订阅了这个队列(queue)的消费者(consumer),或消费者(consumer)按需求自行获取。
消息属性 message meta-data
publisher发布消息时可以给message指定各种消息属性(message meta-data)。
有些属性有可能会被消息代理(brokers)使用,然而其他的属性则是完全不透明的,它们只能被接收消息的应用所使用。
确认机制 message acknowledgements
网络不可靠,AMQP模块包含了消息确认(message acknowledgements)的功能。
当一个消息从队列中投递给消费者后(consumer),消费者会通知一下消息代理(broker),这个可以是自动的也可以由处理消息的应用的开发者执行。
当“消息确认”被启用的时候,消息代理不会完全将消息从队列中删除,直到它收到来自消费者的确认回执(acknowledgement)。
三、交换机
(一)交换机类型
交换机类型 | 预声明的默认名称 |
---|---|
直连交换机 Direct exchange
|
(Empty string) and amq.direct |
扇形交换机 Fanout exchange
|
amq.fanout |
主题交换机 Topic exchange
|
amq.topic |
头交换机 Headers exchange
|
amq.match (and amq.headers in RabbitMQ) |