首页 > 其他分享 >RabbitMQ中的相关概念,以及几种交换机的routingkey的匹配规则

RabbitMQ中的相关概念,以及几种交换机的routingkey的匹配规则

时间:2023-05-20 16:55:59浏览次数:33  
标签:routingkey 队列 RabbitMQ 交换机 消息 路由

RabbitMQ 是一个基于 AMQP 协议实现的开源消息中间件,其核心概念包括以下几个部分:

  1. 消息(Message):指数据传输的基本单位,它由消息头(Header)、属性(Properties)和消息体(Body)组成;

  2. 队列(Queue):指消息的缓存区,用于暂存待处理的消息;

  3. 交换机(Exchange):指消息的路由器,用于将消息发送到特定的队列中;

  4. 绑定(Binding):指将交换机和队列进行绑定的过程,通常需要同时指定一个路由键(Routing Key),以便交换机可以将消息路由到正确的队列中。

RabbitMQ 的消息传递原理如下图所示:

RabbitMQ Architecture

具体来说,应用程序将消息发送到 RabbitMQ 的交换机中,交换机根据预先设置的路由规则,将消息路由到一个或多个队列,并将消息存储在队列中。消费者从队列中接收消息,并将消息传送给消费者进行处理。在消息传递的过程中,RabbitMQ 可以保证消息的可靠性、顺序性和及时性。

其中,AMQP(Advanced Message Queuing Protocol)是 RabbitMQ 使用的标准协议,它定义了消息格式、交换机类型、队列类型、路由规则等内容,使得不同的程序之间可以互相通信并共享消息。RabbitMQ 还提供了多种语言的客户端库和管理界面,方便开发人员使用和管理 RabbitMQ 服务。

 
 

在RabbitMQ中的几种交换机,以及匹配规则:
RabbitMQ 支持以下 4 种类型的交换机:

  1. 直连交换机(Direct Exchange):将消息路由到与路由键完全匹配的队列中,它的 routingkey 是一个字符串,可以与队列的 binding key 进行精确匹配。

  2. 主题交换机(Topic Exchange):将消息路由到与匹配模式相符的队列中,它的 routingkey 是一个由单词和分隔符组成的字符串,其中 * 可以代替一个单词,# 可以代替任意多个单词,用于实现通配符匹配。

  3. 扇形交换机(Fanout Exchange):将消息广播到所有与交换机绑定的队列中,忽略 routingkey 的值,适用于一对多的广播场景。

  4. 头部交换机(Headers Exchange):将消息路由到与 header 属性相匹配的队列中,它的 routingkey 是空字符串,要求发送的消息必须携带至少一个 header 属性,通过设置 header-properties 参数来实现复杂的匹配规则。

需要注意的是,可以在绑定队列和交换机时,指定一个 binding key,用于进一步约束消息的路由规则。对于直连交换机和主题交换机,binding key 和 routingkey 需要精确匹配;对于扇形交换机和头部交换机,binding key 被忽略。

标签:routingkey,队列,RabbitMQ,交换机,消息,路由
From: https://www.cnblogs.com/just1t/p/17417447.html

相关文章

  • RabbitMQ工作模式-Routing模式
    路由模式:1、每个消费者监听自己的队列,并且设置routingkey。2、生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列。 Routing模式是可以完成订阅模式的工作的,下面的代码在RoutingKey为“inform”的消息中有所体现示例代码:生产者:publicclassP......
  • rabbitmq:pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport
    本地连接rabbitmq出现这个问题: 是因为我把port写成了15672,改成5672即可 ......
  • 交换机、集线器、路由器和网桥的区别
    交换机、集线器、路由器和网桥是计算机网络中常见的网络设备,它们在网络中发挥不同的作用并位于不同的层次。下面是它们的区别和各自所在的层次:1.集线器(Hub)区别:集线器是一种简单的网络设备,用于将多个计算机连接在一起形成一个局域网。它的主要功能是将接收到的数据包广播到所有......
  • RabbitMQ组成
    下图是RabbitMQ的基本结构:组成部分说明如下:Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。Produ......
  • 消息中间件-RabbitMQ
    网络协议。基于TCP上面架构更高层次的功能框架。这里主要是异步,中间服务器,多个客户端角色。多对多的情形。发布--订阅模式Mqtt—messagequeueingtelemetrytransport发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)就是消息分了类型,然后指定某个类型接收队列模......
  • Windows 安装 RabbitMQ
    引用:http://www.ppmy.cn/news/6570.html 下载地址寻找:https://www.rabbitmq.com/download.html  ......
  • Cisco Nexus 9000v Switch, NX-OS Release 10.3(3)F - 虚拟化的数据中心交换机
    CiscoNexus9000vSwitch,NX-OSRelease10.3(3)F-虚拟化的数据中心交换机请访问原文链接:https://sysin.org/blog/cisco-nexus-9000v/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNX-OSSystemSoftwareReleaseDateCiscoNX-OSRelease10.3(3)F202......
  • ACC5595网络交换机
    实时仿真计算机半实物仿真系统 公司自主开发的实时仿真计算机、半实物仿真系统,致力于为各领域用户提供快速原型设计及硬件在回路仿真解决方案。   实时仿真计算机系列产品,可广泛应用于实时控制快速原型、半实物仿真、人机回路仿真、系统测试等实时仿真领域。反射内存卡:接口有......
  • RabbitMQ Shovel使用
    页面概览创建ShovelVirtualhost:虚拟主机Name:创建Shovel名称Source:源protocol:协议,默认AMQP0.9.1,在AMQP1.0中增加address参数url:源broker的URI。此参数指定要从哪个broker拉取消息queue:要复制的队列名称/exchange:要复制的交换机prefetch-count-消费者应获取的每个请......
  • Centos环境下部分中间件“rabbitmq、rocketmq、clickhouse”部署
    部分中间件部署目录部分中间件部署docker部署rabbitmqdocker部署rocketmq单机部署clickhousedocker部署rabbitmq#拉镜像dockerpullrabbitmq:3.8-management#启动dockerrun\-eRABBITMQ_DEFAULT_USER=guest\-eRABBITMQ_DEFAULT_PASS=guest\-v/data/rabbitmq/ra......