AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。
AMQP核心概念
- Server :又称Broker,接受客户端的连接实现 AMQP 实体服务。
- Connection : 连接,应用程序与Broker 的网络连接。
- Channel : 网络通道,几乎所有的操作都在 Channel 中进行,Channel 是进行消息读写的通道。客户端可以建立多个 Channel,每个Channel 代表一个会话任务。
- Message : 消息,服务区和应用程序之间传输的数据,有Properties 和 Body 组成。Properties 可以对消息进行修饰,比如消息优先级、延迟等高级特性,Body 就是消息体内容。
- Virtual Host :虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个 Virtual host 里面可以有若干个Exchang 和 Queue,同一个Virtual Host 里面不能有相同名称的Exchange 或 Queue。
- Exchange : 交换机,接受消息根据路由键转发消息到绑定队列
- Binding : Exchange 和 queue 之间的虚拟连接,Binding 中可以包含 Routing key
- Routing key :一个路由规则,虚拟机可用它来确定如何路由一个特定消息。
- Queue :也被称为 Message Queue ,消息队列保存消息并将它们转发给消费者。