码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • RabbitMQ 消息模型


     参考 ​​​​​​【RabbitMQ】RabbitMQ架构模型_rabbitmq结构模型-CSDN博客


    之前的学习都只是知道名字,但并没有真正的理解,每次看还是不懂,所以今日理解透 !

    RabbitMQ 收发消息过程如下:

    首先从消费者开始:

    每个消费者都有一个自己的队列,每个消费者都从自己的队列中取消息 消费。

    消费者代码表示如下:

    直接就是监听一个队列

    org.springframework.amqp.rabbit.annotation.RabbitListener

    生产者将消息发给交换机,交换机将消息发给 队列

    下图:p 为生产者,x 为交换机

    消费者不与队列交互,只给交换机发送,交换机再把消息转发给指定队列,消费者监听到自己的队列有消息了,就可以消费了。

    那么 交换机如何知道要把 消息转发给 那个或哪些队列呢?

    首先可能存在多个交换机,所以 队列是需要绑定到交换机的,交换机转发消息时 可选择的队列列表 只能是绑定到它的 队列。

    然后怎么知道转发到哪个队列呢?

    这得看交换机类型:Fanout 广播、Direct 定向、Topic 通配符

    1. Fanout 广播交换机

    广播就是将消息转发给 绑定到该交换机的 全部队列上。

    2. Direct 定向交换机

    模型如上:

    首先 队列绑定到交换机的时候 需要同时指定一个 bindingKey

    如图:C1 的 bindingKey 是 error; C2 的 bindingKey 是 info、error、warning;

    然后,生产者发送消息的时候就要传这个值了:比如 传一个 info,那么 交换机就会把消息转发给 绑定了 info 的队列 C2 上。

    生产者传的这个值 叫做 routingKey 路由key

    消费者绑定交换机的值叫做 bindingKey 绑定key

    所以消费者最终发的消息是:消息要发给哪个交换机的哪个 bindingKey 的队列上。

    (消费者传参时参数叫做 routingKey,实际上是和 bindingKey 相等的,叫法不同)

    3. Topic 通配符交换机

    通配符交换机可以解析 routingKey 上的通配符,来转发消息

    看看代码如何表示以上关系

    1. 定义交换机

    直接通过Builder 可以构造出不同类型的交换机

    2. 定义队列

    3. 队列和交换机绑定

    4. 发送消息

    如图发了一个延迟消息

    发送消息时,第一个参数指定交换机,第二个参数指定routingKey,第三个参数为要发送的消息内容

  • 相关阅读:
    Flink集群配置
    Java每日一练
    CUDA小白 - NPP(8) 图像处理 Morphological Operations
    【生命周期】
    MATLAB programming interface for STK software stkInit()
    三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
    TorchV的RAG实践分享(三):解析llama_index的数据存储结构和召回策略过程
    武汉申报!​2022年公开遴选市级工业智能化改造诊断平台,申报条件基本要求以及申报流程汇总
    远控新起点,管理有力量!向日葵推出远程办公管理平台2.0
    虚拟机CentOS和windows 通过共享文件夹互传
  • 原文地址:https://blog.csdn.net/weixin_42195284/article/details/133940756
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号