面向消息的中间件设计的一个标准的应用层二进制通信协议
消息交互标准
JMS(Java Message Service)同样是消息通信标准,但是它是API标准,这是说在代码层面可以用同一套代码适配不同的消息产品。但是仅仅是调用接口相同,各产品在信息格式和传输上各不相同,不能跨产品通信。AMQP可以看作是实现的标准,它定义了数据格式。遵从这一标准,消息具备了互操作性,无论来自哪种操作系统、CPU架构、产品以语言实现。
AMQP架构[1]
AMQP中的主要概念
- Broker: 一个中间件,负责接收生产者的消息并传递给消费者
- Virtual Host: 相当于命名空间,进行组件隔离
- Exchange:所有消息的集散地,路由到消息队列
- Queue: 消息的目的地,存储等候消费者处理
- Binding: 路由规则,定义如何路由消息
AMQP的特点是消息生产者不是直接把消息发到队列上,而是都发送到Exchange
上,由Exchange根据Binding规则决定消息路由到哪些队列上。可以自定义规则使得路由更加灵活。
Exchange模式[2]
AMQP的消息包含消息头和消息体。消息头包含目的地,路由关键字(Routing key),优先级等描述信息,消息体是真正传输的二进制数据。
每个Queue可以有一个绑定关键字(binding key)。这两个key可以作为路由的依据。
典型的路由方式
- Fanout: 消息会传到所有队列
- Direct:消息会传到routing key和binding key相等的队列
- Topic: 消息会传到满足binding key通配符规则的队列
- Header: 查询Header中的其他属性值作为路由依据
- Custom: 自定义的路由规则
一分也是爱~
版权声明
This site by Linest is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由Linest创作并维护的博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。