• [MQ] 交换机与队列的介绍


    ✨✨个人主页:沫洺的主页

    📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                               📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                               📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

    💖💖如果文章对你有所帮助请留下三连✨✨

    💌消息推送到接收的流程

    下图是一个简单的消息推送到接收的流程

    黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。

    💌常用的交换机

    常用的交换机有以下三种,因为消费者是从队列获取信息的,队列是绑定交换机的(一般),所以对应的消息推送/接收模式也会有以下几种:

    1. 直连交换机(Direct Exchange)
    2. 扇型(广播)交换机(Fanout Exchange)
    3. 主题交换机(Topic Exchange)

    1️⃣Direct Exchange

    直连型交换机,根据消息携带的路由键将消息投递给对应队列。

    大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键 routing key 。

    然后当一个消息携带着路由值为X,这个消息通过生产者发送给交换机时,交换机就会根据这个路由值X去寻找绑定值也是X的队列。

    2️⃣Fanout Exchange

    扇型(广播)交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。

    3️⃣Topic Exchange

    主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。

    简单地介绍下规则:

    1. * (星号) 用来表示一个单词 (必须出现的)
    2. # (井号) 用来表示任意数量(零个或多个)单词
    3. // * 代表两点之间一个占位单词
    4. // # 代表后面所有,匹配所有

    通配的绑定键是跟队列进行绑定的,举个小例子

    队列Q1 绑定键为 *.TT.* 队列Q2绑定键为 TT.#

    如果一条消息携带的路由键为 A.TT.B,那么队列Q1将会收到;

    如果一条消息携带的路由键为TT.AA.BB,那么队列Q2将会收到;

    当一个队列的绑定键为 "#"(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。

    当 * (星号) 和 # (井号) 这两个特殊字符都未在绑定键中出现的时候,此时主题交换机就拥有的直连交换机的行为。

    所以主题交换机也就实现了扇形交换机的功能,和直连交换机的功能

    ⛲手动创建RabbitMQ交换与队列

    创建队列

     创建交换机

     绑定交换机与队列

     交换机发送消息

     队列获取消息

    以上其实就是直连交换机的模式

    广播交换机

    与直连交互机的区别就是没有Routing key

    广播交换机在进行队列绑定时是不需要Routing key的,也就是当交换机发生消息时,会将消息给每一个绑定的队列发送过去

    主体交换机

    前面说了

    *  代表两点之间一个占位单词
    #  代表后面所有,匹配所有

    创建三个队列

     创建主体交换机

     绑定关系

    给Routing key为lan.qiu的队列发生消息如下

     可以看到*.qiu的队列qiu也收到了消息

    当一个队列的绑定键为 "#"(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。

  • 相关阅读:
    【漏洞复现】Progress Flowmon 命令注入漏洞CVE-2024-2389
    VUE搭建云音乐播放器(App版本)
    i.MX6ULL驱动开发 | 33 - NXP原厂网络设备驱动浅读(LAN8720 PHY)
    让 K8s 更简单!8款你不得不知的 AI 工具-Part 1
    SpringBoot 还用 if 校验参数?老司机都是这么玩的!
    8秒完成2万个基因的生存分析 运行速度太慢怎么办 批量单基因生存回归 tcga geo数据分析策略
    SpringBoot原理简介说明
    跨链协议支持Sui的资产所有权理念,助力资产在不同链之间流通
    【ASM】字节码操作 转换已有的类 修改方法 替换方法调用
    JSON和ProtoBuf序列化
  • 原文地址:https://blog.csdn.net/HeyVIrBbox/article/details/127845214