前言(何为AMQP?)
一个提供统一消息服务的应用层标准高级消息队列协议,是一个通用的应用层协议
消息发送与接受的双方遵守这个协议可以实现异步通讯。这个协议约定了消息的格式和工作方式。
何为RabbitMq?
RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言。
rabbitmq原理
- Producer:即数据的发送方
Create messages and publish (send) them to a Broker Server
一般一个Message有两个部分:payload(有效载荷)和label(标签),payload顾名思义就是传输的数据,label是exchange的名字或者说是一个tag,它描述了payload,而且RabbitMQ也是通过这个label来决定把这个Message发给哪个Consumer
- Exchange:即rabbitmq内的消息交换器
Exchanges are message routing agents, An exchange accepts messages
from the producer application and routes them to message queues with
help of header attributes, bindings, and routing keys.
exchange从生产者那收到消息后,一般会指定一个Routing Key,来指定这个消息的路由规则,当然Routing Key需要与Exchange Type及Binding key联合使用才能最终生效,根据路由规则,匹配查询表中的routing key,分发消息到queue中。
- binding:即绑定
A binding is a “link” that you set up to bind a queue to an exchange
在绑定(Binding)Exchange与Queue的同时,一般会指定一个Binding key;但Binding key并不是在所有情况下都生效,它依赖于Exchange Type
- Queue