一、前言
RabbitMQ 是一个由 erlang 开发的 AMQP (Advanced Message Queuing Protocol) 的开源实现。
AMQP :高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。 RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
应用场景:
异步处理
应用解耦
流量削峰
上篇《Centos7 安装RabbitMQ及配置(亲测)》,今天介绍一下RabbitMQ 工作模式
二、工作模式介绍
2.1简单模式与工作队列模式
之所以这两个模式一起介绍,是因为它们的工作原理很简单,都是由生产者、队列、消费者组成。
生产者是发送消息的用户的应用程序。
队列是存储消息的缓冲器。
消费者是接收消息的用户的应用程序。
生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。
当有多个消费者时,消费者平均消费队列中的消息。
2.2 发布/订阅模式
图中X代表交换机,它接收来自生产者的消息,另一方面将它们推送到队列
在消息产生之前,绑定队列的消费者都能收到消息。
2.3 路由模式
需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。如果一个队列绑定到该交换机上要求路由键 (routingKey)“dog”,则只有被标记为 “dog” 的消息才被转发到该队列,不会转发 dog.puppy,也不会转发 dog.guard,只会转发dog。
2.4 主题模式
发送到主题交换的消息不能具有任意的 routing_key - 它必须是由点分隔的单词列表。单词可以是任何内容,但通常它们指定与消息相关的一些功能。一些有效的路由键示例:“ stock.usd.nyse ”,“ nyse.vmw”,“ quick.orange.rabbit ”。路由密钥中可以包含任意数量的单词,最多可达255个字节。
绑定密钥也必须采用相同的形式。主题交换背后的逻辑 类似于直接交换- 使用特定路由密钥发送的消息将被传递到与匹配的绑定密钥绑定的所有队列。但是绑定键有两个重要的特殊情况:
(*)可以替代一个单词。
(#)可以替换零个或多个单词。
队列需要绑定要一个模式上。符号 “#” 匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#” 能够匹配到“audit.irs.corporate”,但是“audit.” 只会匹配到 “audit.irs”。相当于路由模式的模糊匹配
这里就只介绍五种模式,在 《RabbitMQ 官网》上提供了 6 中工作模式:简单模式、工作队列模式、发布/订阅模式、路由模式、主题模式 和 RPC 模式。
三、项目源码
评论 (0)