RabbitMQ面试必备知识点及实战 - Exchange交换机类型详解(中)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: RabbitMQ面试必备知识点及实战 - Exchange交换机类型详解

2.2 Topic exchange

尽管使用直接交换改进了我们的系统,它仍然有局限性 - 不能做基于多个标准的路由。


比如在日志系统,可能不仅要根据严重性订阅日志,还要根据日志源订阅日志。


你可能从syslog unix工具中了解这个概念,它根据严重性(info / warn / crit …)和facility(auth / cron / kern …)来路由日志。

这更具灵活性 - 我们可能想要监听来自 cron 的关键错误以及来自 kern 的所有日志。


为了在日志记录系统中实现这一点,还需要了解更复杂的主题交换机。


*可匹配一个单词


#可匹配零或多个单词


所有发送到Topic Exchange的消息会被转发到所有关心RouteKey中指

定Topic的Queue上


Exchange将RouteKey和某Topic进行模糊匹配,此时队列需要绑定一个Topic

2.2.1 实例1

image.png

在这个例子中,我们将发送所有描述动物的消息。消息将与包含三个单词(两个点)的routing key一起发送.

routing key中的第一个单词描述速度,第二颜色,第三是物种:“。。”。


我们创建了三个绑定:Q1绑定了绑定键“* .orange.”,Q2绑定了“.*.rabbit”和“lazy.#”


这些绑定可总结为:


Q1对所有橙色动物感兴趣

Q2希望听到关于兔子的一切,以及关于懒惰动物的一切

routing key设置为“quick.orange.rabbit”的消息将传递到两个队列。消息“lazy.orange.elephant”也将同时发送给他们.

另一方面


“quick.orange.fox”只会转到第一个队列

而“lazy.brown.fox”只会转到第二个队列

“lazy.pink.rabbit”将仅传递到第二个队列一次,即使它匹配两个绑定

“quick.brown.fox”与任何绑定都不匹配,因此它将被丢弃。

如果我们违背我们的约定并发送带有一个或四个单词的消息,例如“orange” or “quick.orange.male.rabbit”,会发生什么?好吧,这些消息将不会匹配任何绑定,因此将丢失.


另一方面,“lazy.orange.male.rabbit”,虽然它有四个单词,也会匹配最后一个绑定,并将被传递到第二个队列。

实例图

image.png

image.png

实操演示

  • Pro
  • image.png
  • Con
  • image.png
  • 启动消费者:
  • image.png
  • image.png
  • 启动生产者:
  • image.png
  • 消费端收到了消息
  • 修改匹配格式,理论上只能接受前两个消息
  • image.png
  • 注意在管控台,先将之前的匹配绑定取消!
  • 3.png
  • 4.png
  • 显然仅能接受前两个消息
  • image.png
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
2月前
|
缓存 架构师 Java
Maven实战进阶(01)面试官:Maven怎么解决依赖冲突?| 有几种解决方式
本文介绍了Maven的核心功能和依赖管理技巧。Maven是基于项目对象模型(POM)的构建工具,具备跨平台、标准化、自动化等特性。其三大核心功能为依赖管理、仓库管理和项目构建。依赖管理通过pom.xml文件引入第三方组件并自动下载;仓库管理涉及中央仓库、私服和本地仓库;项目构建则通过生命周期管理编译、测试、打包等流程。文章还详细讲解了依赖冲突的解决方法,包括默认规则、手工排除和版本指定等策略。
|
3月前
|
并行计算 算法 安全
面试必问的多线程优化技巧与实战
多线程编程是现代软件开发中不可或缺的一部分,特别是在处理高并发场景和优化程序性能时。作为Java开发者,掌握多线程优化技巧不仅能够提升程序的执行效率,还能在面试中脱颖而出。本文将从多线程基础、线程与进程的区别、多线程的优势出发,深入探讨如何避免死锁与竞态条件、线程间的通信机制、线程池的使用优势、线程优化算法与数据结构的选择,以及硬件加速技术。通过多个Java示例,我们将揭示这些技术的底层原理与实现方法。
153 3
|
5月前
|
Android开发
Android面试高频知识点(1) 图解Android事件分发机制
Android面试高频知识点(1) 图解Android事件分发机制
|
5月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
5月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
47 3
|
5月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
|
5月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
46 2
|
6月前
|
Web App开发 前端开发 Linux
「offer来了」浅谈前端面试中开发环境常考知识点
该文章归纳了前端开发环境中常见的面试知识点,特别是围绕Git的使用进行了详细介绍,包括Git的基本概念、常用命令以及在团队协作中的最佳实践,同时还涉及了Chrome调试工具和Linux命令行的基础操作。
「offer来了」浅谈前端面试中开发环境常考知识点
|
5月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
83 1
|
5月前
|
Android开发
Android面试高频知识点(1) 图解 Android 事件分发机制
Android面试高频知识点(1) 图解 Android 事件分发机制
71 1

热门文章

最新文章