RabbitMQ 入门系列(三)

简介: RabbitMQ 入门系列(三)

RabbitMQ 入门系列(一)讲述了 RabbitMQ 有关的基本概念。RabbitMQ 入门系列(二)通过两个示例实现了基本的消息投递和接收功能,但示例中使用的均是默认的交换器,且并未对其进行深入描述,本文则将会继续通过示例重点讲述交换器的几种不同类型。




01


回顾



我们再来回顾一遍 RabbitMQ 的一般使用流程:


1、建立到 RabbitMQ 的连接。

2、创建信道。

3、声明交换器。

4、声明队列。

5、绑定交换器和队列。

6、消息操作。生产者:生成并发布消息;消费者:订阅并消费消息。

7、关闭信道。

8、关闭连接。



交换器 Exchange 的四种类型:


1、fanout:广播,将消息传递给所有该交换器绑定的队列。

2、direct :直连,将消息传递给 Routing Key 与 Binding Key完全一致的队列中,可以有多个队列。

3、topic :模糊匹配,Binding Key 是一个可以用符号 . 分隔单词的字符串,模糊匹配下,符号 * 用于匹配任意一个单词,符号  # 用于匹配零个或多个单词。

4、headers :根据消息中具体内容的 header 属性来作为路由规则的,这种类型对资源消耗太大且很少使用,本文不对此类型进行讲述。




02


Publish/Subscribe



此示例重点关注交换器 Exchange 的 fanout 类型。


消费者接收消息(receive_log.js):




生产者投递消息(emit_log.js):




fanout 类型的交换器会直接将消息广播到所有与其绑定的队列,所以绑定交换器与队列时无需指定 binding key (空字符串),投递消息时也无需指定 routing key (空字符串)。


交换器与队列一样具有 durable 属性,此属性表示是否对交换器进行持久化,也就是保存到磁盘上,一旦 RabbitMQ 服务器重启,持久化的交换器可以被重新恢复。


这里在声明队列时,我们使用的是一种临时的队列,我们无需指定该队列的名称,RabbitMQ 会自动为其生成一个随机的名称,同时 exclusive 属性表明该队列是否只会被当前连接使用,也就是说连接一旦关闭则此队列也会被删除。




03


Routing



此示例重点关注交换器 Exchange 的 direct 类型。


消费者接收消息(receive_log_direct.js):




生产者投递消息(emit_log_direct.js):




交换器为 direct 类型,路由规则是 routing key 与 binding key 完全一致,这就是说与上例 fanout 类型不同的是,我们必须指定绑定交换器和队列的 binding key ,投递消息时也需要指定路由的 routing key 。其余地方基本一致。




04


Topics



此示例重点关注交换器 Exchange 的 topic 类型。


消费者接收消息(receive_log_topic.js):




生产者投递消息(emit_log_topic.js):




交换器的 topic 类型,只需注意模糊匹配的规则即可,绑定交换器和队列的 binding key 以符号 . 将字符串分隔为不同的单词(不一定是真实的单词,理解为一个部分就行了),符号 * 用于匹配任意一个单词,符号  # 用于匹配零个或多个单词。




05


结语



其实你会发现本文三个示例中的大部分地方都是类似的,唯一不同的地方就是不同的交换器类型需要对 binding key 和 routing key 进行不同的处理。通过本文了解了不同的交换器类型,有助于你在此基础上进行具体的路由规则设计。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
7月前
|
消息中间件 弹性计算 Java
Rocketmq-spring入门与实践
本场景带您体验如何在 Spring 生态中优雅地使用 Apache RocketMQ,感受最受欢迎业务开发框架与最受欢迎消息平台结合的魅力。
404 0
|
7月前
|
消息中间件 弹性计算 Java
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
459 0
|
5月前
|
消息中间件 数据安全/隐私保护 网络架构
Windows下RabbitMQ安装及入门
Windows下RabbitMQ安装及入门
|
12天前
|
消息中间件 供应链 Java
RabbitMQ入门指南(九):消费者可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了消费者确认机制、失败重试机制、失败处理策略、业务幂等性等内容。
28 0
RabbitMQ入门指南(九):消费者可靠性
|
12天前
|
消息中间件 存储 Java
RabbitMQ入门指南(八):MQ可靠性
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容。
39 0
|
12天前
|
消息中间件 微服务
RabbitMQ入门指南(四):交换机与案例解析
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了交换机在RabbitMQ中的作用与类型、交换机案例(Fanout交换机、Direct交换机、Topic交换机)等内容。
23 0
|
12天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
35 0
RabbitMQ入门指南(二):架构和管理控制台的使用
|
2月前
|
消息中间件 Java Kafka
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
108 0
|
2月前
|
消息中间件 RocketMQ Docker
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
分布式事物【RocketMQ事务消息、Docker安装 RocketMQ、实现订单微服务、订单微服务业务层实现】(八)-全面详解(学习总结---从入门到深化)
53 0
|
3月前
|
消息中间件 存储 Kafka
MQ消息队列学习入门
MQ消息队列学习入门
77 0

热门文章

最新文章