当前位置: 首页 > news >正文

RabbitMQ-交换机(Exchange)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ(本章节)

前面的内容,我们介绍了虚拟主机(vhost),但是它只是一个逻辑概念,它必须配合对应的交换机(Exchange),队列(Queue),绑定(Binding)才能具体使用,今天我们首先来介绍的是交换机。

交换机(Exchange)

交换机是接收生产者发送消息的组件,它的主要功能是根据特定的规则将消息路由到一个或多个队列中。可以简单的理解消息首先会到交换机,然后才会分发出去,这个和传统的物理交换机实际比较类似。

交换机类型

RabbitMQ 提供了四种主要的交换机类型,每种类型实现了不同的路由算法:

    直连交换机(Direct Exchange):根据消息的路由键(routing key)将消息路由到与之绑定的队列中,绑定键(binding key)和路由键精确匹配时消息才会被路由。这个也是日常使用最多的交换机类型。

    扇形交换机(Fanout Exchange):将接收到的所有消息广播到与之绑定的所有队列中,忽略路由键。

    主题交换机(Topic Exchange):通过消息的路由键和绑定键的模式匹配来决定消息的路由。绑定键可以使用*(匹配一个单词)和#(匹配零个或多个单词)通配符。

    头交换机(Headers Exchange):根据消息的头部信息而非路由键来进行消息路由,绑定规则通过消息头中的键值对来定义。

    交换机属性

    名称:交换机的唯一标识符,在 vhost 内必须唯一。

    持久性(Durable):设置为 true 时,交换机会在 RabbitMQ 服务器重启后仍然存在。

    自动删除(Auto-delete):当所有与之绑定的队列都解除绑定时,交换机将被自动删除。

    内部(Internal):如果设置为 true,则该交换机不能直接接收生产者的消息,只能用于交换机之间的绑定。可以简单理解它只接收其他交换机发过来的信息。

    默认交换机介绍

    每创建一个虚拟主机(vhost),都会默认创建下面的交换机。

    图片

    1.所有交换机都基于虚拟主机(vhost),这里默认都是在根(/)下面。

    2.系统预设了部分交换机,其中第一个是没有指定交换机的的信息会被这个默认交换机收取。

    3.就是前面指定的交换机类型。

    4.“D”代表持久化(重启了还在)“I” 代表不对外

    创建交换机

    图片

    这里实际上就是前面哪些参数,前面提到过交换机具有自动删除就在这里配置,还有是否是内部交换机。Alternate exchange (备用交换机)我们后期讲解死信队列的时候来说。

    创建交换机的时候,选择的虚拟主机必须要有对应的账号权限才可以,比如下图这样的权限,我如果给/test01 虚拟主机(vhost)创建交换机则会拒绝。

    图片

    后面的操作,我们尽量使用页面来完成。

    下图的ceph115就是交换机(Exchange),位于虚拟主机(vhost)/test 下,交换机类型是使用最多的直连交换机(Direct Exchange)。

    图片

    http://www.xdnf.cn/news/1169425.html

    相关文章:

  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • Arraylist与LinkedList区别
  • STM32-SPI全双工同步通信
  • LWIP学习记录2——MAC内核
  • mybatis多对一一对多的关联及拼接操作以及缓存处理
  • 【学习路线】Python全栈开发攻略:从编程入门到AI应用实战
  • Custom SRP - Draw Calls
  • Claude Code Kimi K2 环境配置指南 (Windows/macOS/Ubuntu)
  • python小工具:测内网服务器网速和延迟
  • Qt资源系统:如何有效管理图片和文件
  • Canmv k230 DAC案例——TLV5638
  • 104.二叉树的最大深度
  • API是什么,如何保障API安全?
  • 刀客doc:Netflix与YouTube开始在广告战场正面交锋
  • [学习] 笛卡尔坐标系的任意移动与旋转详解
  • 洛谷 B3939:[GESP样题 四级] 绝对素数 ← 素数判定+逆序整数
  • 深入解析 Pandas:Python 数据分析的强大工具
  • Jenkins接口自动化测试(构建)平台搭建
  • Kafka监控体系搭建:基于Prometheus+JMX+Grafana的全方位性能观测方案
  • NLP自然语言处理的一些疑点整理
  • JavaScript AJAX 实现,演示如何将 Token 添加到 Authorization
  • 怎么在Mac系统中使用不坑盒子?
  • 交叉编译opencv(Cpp)于arm64架构开发板上
  • .NET使用EPPlus导出EXCEL的接口中,文件流缺少文件名信息
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——1、导航编辑器界面(Navigating the editor UI)介绍
  • numpy库的基础知识(二)
  • 理解后端开发中的API设计原则
  • 达梦数据库表字段增加时报错[-2106]:无效的表或视图名,[-2116]:列[IS_REPEAT]已存在
  • [3-02-02].第04节:开发应用 - RequestMapping注解的属性2
  • 支付网关系统前后端鉴权方案