RabbitMQ消息队列(一):常用工作模式及AMQP
1. AMQP
- AMQP 一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
- AMQP 是一个二进制协议,拥有一些现代化特点:多信道、协商式,异步,安全,扩平台,中立,高效。
- RabbitMQ 是 AMQP 协议的 Erlang 的实现。
1.1 相关概念
概念 | 说明 |
---|---|
连接(Connection) | 一个网络连接,比如 TCP/IP 套接字连接。 |
会话 (Session) | 端点之间的命名对话。在一个会话上下文中,保证“恰好传递一次”。 |
信道 (Channel) | 多路复用连接中的一条独立的双向数据流通道。为会话提供物理传输介质。 |
客户端 Client | AMQP 连接或者会话的发起者。AMQP 是非对称的,客户端生产和消费消息,服务器存储和路由这些消息。 |
服务节点(Broker) | Broker消息中间件的服务节点;一般情况下可以将一个 RabbitMQ Broker 看作一台 RabbitMQ 服务器。 |
端点 | AMQP 对话的任意一方。一个 AMQP 连接包括两个端点(一个是客户端,一个是服务器)。 |
消费者(Consumer) | 一个从消息队列里请求消息的客户端程序。 |
生产者(Producer) | 一个向交换机发布消息的客户端应用程序。 |
2. RabbitMQ常用工作模式
2.1 简单模式 HelloWorld
一个生产者、一个消费者,不需要设置交换机(使用默认的交换机)。
2.2工作队列模式 Work Queue
一个生产者、多个消费者(竞争关系),不需要设置交换机(使用默认的交换机)
2.3 发布订阅模式 Publish/subscribe
需要设置类型为 fanout 的交换机,并且交换机和队列进行绑定,当发送消息到交换机后,交换机会将消息发送到绑定的队列。
2.4 路由模式 Routing
需要设置类型为 direct 的交换机,交换机和队列进行绑定,并且指定 routing key,当发送消息到交换机后,交换机会根据 routingkey 将消息发送到对应的队列。
2.5 通配符模式 Topic
需要设置类型为 topic 的交换机,交换机和队列进行绑定,并且指定通配符方式的 routing key,当发送消息到交换机后,交换机会根据 routing key 将消息发送到对应的队列。