rabbitmq 交换机、队列和消息概念

RabbitMQ channel 频道,exchange 交换机和 queue队列 环境: CentOS 7 RabbitMQ Server 版本3.7.9.RELEASE RabbitMQ channel 频道,exchange 交换机和 queue队列 connection是指物理的连接,一个client与一个server之间有一个连接;一个连接上可以建立多个channel,可以理解为逻辑上的连接。一般应用的情况下,有一个channel就够用了,不需要创建更多的ch... 阅读详情

RabbitMQ 是一个功能强大的消息中间件,它采用发布-订阅模式进行消息传递。下面为你详细介绍 RabbitMQ 中交换机、队列和消息的核心概念。

交换机(Exchange)

交换机在 RabbitMQ 中扮演着接收生产者发送消息的角色,它会根据特定的路由规则,将消息转发到对应的队列。你可以把交换机想象成一个邮局,当你把信件投入邮箱后,邮局会根据地址将信件分发给不同的邮递员,而这些邮递员就相当于队列。

交换机的主要类型

RabbitMQ 提供了多种类型的交换机,不同类型的交换机有不同的路由策略:

  • 直连交换机(Direct Exchange):依据消息的路由键(routing key),将消息路由到与之绑定键(binding key)相匹配的队列。
  • 扇形交换机(Fanout Exchange):会把接收到的消息广播到所有与之绑定的队列,完全不考虑路由键。
  • 主题交换机(Topic Exchange):根据路由键和绑定键的模式匹配规则来转发消息,绑定键中可以使用*(匹配一个单词)和#(匹配零个或多个单词)通配符。
  • 头交换机(Headers Exchange):通过消息头中的键值对进行匹配,而不是路由键,这种匹配可以是all(所有键值对都匹配)或any(任意一个键值对匹配)。
交换机的重要属性
  • 持久化(Durable):设置为持久化的交换机,在 RabbitMQ 服务器重启后不会丢失。
  • 自动删除(Auto-delete):当所有与之绑定的队列都解除绑定时,自动删除交换机。
  • 内部(Internal):内部交换机不能直接接收生产者的消息,只能用于交换机之间的绑定。

队列(Queue)

队列是 RabbitMQ 中存储消息的缓冲区,它遵循 FIFO(先进先出)原则,但在某些情况下,消费者也可以不按顺序接收消息。你可以把队列看作是邮局的信箱,信件会按照到达的顺序依次存放,直到被取走。

队列的主要特性
  • 持久化(Durable):持久化队列会将元数据和消息保存到磁盘,这样在 RabbitMQ 重启后,队列不会丢失。
  • 排他性(Exclusive):排他队列仅对首次声明它的连接可见,并且在该连接断开时会自动删除。
  • 自动删除(Auto-delete):当最后一个消费者取消订阅后,自动删除队列,但前提是队列曾经有过消费者。
  • 最大长度:可以限制队列中消息的数量,当达到最大长度时,新消息可能会被丢弃或替换旧消息。

消息(Message)

消息是 RabbitMQ 中在生产者和消费者之间传递的数据单元,它由消息头和消息体组成。消息头包含了如路由键、优先级、过期时间等元数据,而消息体则是实际要传输的数据。你可以把消息看作是信件的内容,包括信封上的地址信息(消息头)和信里的文字(消息体)。

消息的主要属性
  • 持久化(Persistent):设置为持久化的消息,会被写入磁盘,即使 RabbitMQ 服务器重启,消息也不会丢失。
  • 优先级(Priority):高优先级的消息可能会比低优先级的消息更早被消费,但这取决于队列的具体实现。
  • 过期时间(TTL):可以为消息设置过期时间,超过这个时间的消息将被自动删除。
  • 内容类型(Content Type):用于指定消息体的格式,例如application/json、text/plain等。

三者之间的关系

RabbitMQ 中交换机、队列和消息的工作流程如下:

  1. 生产者将消息发送到交换机,并指定消息的路由键。
  2. 交换机根据自身的类型和绑定规则,决定将消息路由到哪些队列。
  3. 消息被存储在队列中,等待消费者消费。
  4. 消费者从队列中获取消息并进行处理。

持久化配置

为了确保消息在 RabbitMQ 服务器重启后不会丢失,需要对交换机、队列和消息进行持久化配置:

  • 交换机持久化:在声明交换机时,将durable参数设为true。
  • 队列持久化:在声明队列时,把durable参数设置为true。
  • 消息持久化:在发送消息时,将delivery_mode设置为2。

只有同时配置了这三个方面的持久化,才能保证消息的可靠性。不过,需要注意的是,消息持久化会带来一定的性能开销,因为消息需要被写入磁盘。

RabbitMQ之交换机 在RabbitMQ工作流程有一项叫在中生产者发送的信息不会直接投递到队列中,而是先将消息投递到交换机中,在由交换机路由到一个或多个队列中。 阅读详情

相关推荐

RabbitMQ消息队列安装配置及常用交换机

参数一队列名称,参数二 队列持久化 重启mq队列仍然存在,参数三exclusive – 如果我们声明一个独占队列,则为 true(该队列将仅由声明者的连接使用),参数四 当所有消费客户端连接断开后,是否自动删除 队列 true:删除 false:不删除 官方解释:autoDelete – 如果服务器在队列不再使用时应删除队列,则为 true。将镜像加载到容器中运行。参数一队列名称或交换机名称,参数二为参数一值的类型 类型为队列或交换机,参数三交换机名称,参数四 路由键,参数五百度 设置为null。

ningxiaobai456的博客 2053

RabbitMQ的交换机与队列

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

m0_74356429的博客 2114

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 103

RabbitMQ 核心概念(交换机、队列、路由键),队列类型等介绍

RabbitMQ 是一个开源的消息代理(Message Broker),用于在应用程序之间传递消息。它实现了高级消息队列协议(AMQP),提供了可靠的消息传递和消息路由机制,以支持分布式系统的开发。AMQP:AMQP(Advanced Message Queuing Protocol)是一种协议,用于定义消息传递的规范。RabbitMQ是AMQP协议的一个流行实现之一,它允许不同的应用程序之间通过消息进行通信。生产者:生产者是消息的发送方。它们创建消息并将其发布到 RabbitMQ 的交换机上。

日常记录 6001

树莓派4B学习笔记(5)—— 来个GPIO操作吧

一. GPIO库介绍 对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。 python 开发语言:python 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。 wiring PI 开发语言:C、C++ 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiring Pi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。

weixin_44415639的博客 8755

告别‘火龙’:实测BES2800/RK2108等主流芯片,聊聊AI眼镜的功耗与散热‘内卷’实战

本文深入探讨了AI智能眼镜在功耗与散热方面的挑战,重点分析了恒玄BES2800和瑞芯微RK2108等主控芯片的能效表现。通过实测数据和优化策略,揭示了在6nm工艺、异构计算和系统级散热方案下的实战经验,为AI眼镜的功耗管理提供了实用解决方案。

weixin_30839881的博客 946

rabbitmq的使用介绍

代码实现:代码实现: 代码实现:代码实现:

2301_81230656的博客 1361

WPF用户控件间属性传递的艺术

本文详细介绍了WPF中父控件向子控件传递属性的方法。针对常见的绑定失效问题,重点讲解了使用RelativeSource绑定技术,通过指定AncestorType确保正确访问父控件属性。文章通过实例演示了从ParentModel传递属性到ChildUserControl依赖属性的完整实现过程,包括模型定义、XAML结构设计和代码实现。这种方法有效解决了数据上下文混淆问题,为WPF开发中的控件交互提供了可靠解决方案,有助于提升应用的灵活性和可维护性。

2501_90323865的博客 56

RabbitMQ交换机与队列

当这样做的时候,我们需要明白一点,在AMQP 0-9-1中,消息的负载均衡是发生在消费者(consumer)之间的,而不是队列(queue)之间。延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。(7)x-dead-letter-routing-key:死信消息路由键,在消息发送到死信交换器时会使用该路由键,如果不设置,则使用消息的原来的路由键值。

Anolzo 2194

【1.2】Costas环的基本原理概述

Costas环是一种用于载波恢复的相干解调技术,可直接从BPSK等抑制载波信号中恢复本地载波并完成解调。其核心结构包含同相/正交双支路处理,通过混频、低通滤波后,利用I/Q支路信号乘积进行相位误差检测,经环路滤波器调节VCO输出频率,实现载波同步。课程将重点讲解Costas环的MATLAB仿真实现、系统性能分析及FPGA开发,包括信号产生、频偏模拟、滤波器设计等模块,并通过AWGN信道和不同频偏条件下的测试验证系统性能。该技术无需单独提取载波,在数字通信系统中具有重要应用价值。

fpga/matlab/simulink算法仿真工程 452

DeepQA: A Unified Transcriptome-Based Aging Clock Using Deep Neural Networks

摘要: 本研究针对转录组衰老时钟存在的关键局限——仅在健康样本训练导致对患病个体预测偏差的问题,提出DeepQA,一种基于专家混合架构与新型Hinge-MAE损失函数的深度学习模型。通过同时利用健康与患病个体的异质数据训练,DeepQA显著提升预测精度:在健康个体上MAE比现有方法低1.5年,且是首个能正确处理五类疾病条件的模型。其创新性体现在: 方法学突破:Hinge-MAE损失函数消除健康/患病样本的训练偏差,专家混合架构高效整合多队列数据; 流程革新:摒弃传统基因预筛选步骤,通过显著图分析直接识别衰老

qq_44050612的博客 125

消息队列-RabbitMQ:Exchanges、绑定 bindings以及3大常用交换机(Fanout exchange、Direct exchange、Topics exchange)

生产者只能将消息发送到交换机 (exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息,是应该把这些消息放到特定队列还是说把他们放到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。 Exchanges 的类型: 直接 (direct) 主题 (topic) 标题 (headers)(少用) 扇出 (fanout)

小孔靠得住的博客 2431

Jetson nano 系列之2—板载摄像头IMX219启动

我选用的是亚博科技jetson nano的开发板。

驽马十驾,功在不舍;锲而不舍,金石可镂。 4275

RabbitMQ基础概念(消息、队列、交换机)

1、消息的确认   RabbitMQ需要对每一条发送的消息进行确认。消费者必须通过AMQP的basic.ack命令显式地向RabbitMQ发送一个确认,或者在订阅到队列的时候就将auto_ack参数设置为true。当auto_ack为true时,一旦消费者接收消息,RabbitMQ会自动视其确认了消息。需要注意的是消费者对消息的确认和告诉生产者消息已经被接收了这两件事毫不相关。以此,消费者通过确认命令告诉RabbitMQ它已经确认地接收到消息,同时RabbitMQ才能安全的把消息从队列中删除。   如果

Data & Analysis 653

BlockUI专栏目录

BlockUI是一个设计NX对话框的工具,是官方推荐使用的对话框制作方法,能够与NX自身风格相统一,并且在实际开发中经常被使用。BlockUI可以帮助用户快速创建NX对话框,支持多种控件类型,如按钮、文本框、标签等。通过使用BlockUI,用户可以轻松地自定义对话框的布局、样式和交互行为。此外,BlockUI还提供了一些高级功能,如动态更新、条件显示和事件处理等,以帮助用户创建更加复杂和灵活的对话框。本专栏讲述了使用BlockUI制作NX对话框的方法,介绍了每个控件的功能,并且分享一些常用操作的源码。

王牌飞行员_里海的博客 1634

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

rabbitmq第一课-rabbitmq的快速安装以及核心概念

1.什么是MQ?为什么要用MQ?消息队列是一种在应用程序之间传递消息的技术。它提供了一种异步通信模式,允许应用程序在不同的时间处理消息。消息队列通常用于解耦应用程序,以便它们可以独立地扩展和修改。在消息队列中,消息发送者将消息发送到队列中,然后消息接收者从队列中接收消息。这种模式允许消息接收者按照自己的节奏处理消息,而不必等待消息发送者处理完消息。常见的消息队列包括RabbitMQ、Kafka和ActiveMQ等。消息的三大要素:异步、解耦、削峰。2.MQ的优缺点系统可用性降低。

qq_39944028的博客 1471

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

微服务消息队列之——RabbitMQ

本文介绍了RabbitMQ消息队列的基本概念及其在微服务异步通信中的应用。首先分析了同步调用的问题(拓展性差、性能下降、级联失败),对比了常见消息队列的特性,重点讲解了RabbitMQ的核心概念(生产者、交换机、队列等)和四种交换机类型(Direct、Fanout、Topic、Headers)。随后详细说明了Docker部署RabbitMQ的步骤,包括创建用户、虚拟主机和队列绑定的管理界面操作。最后通过SpringAMQP实现了一个广播交换机案例,展示了RabbitMQ在微服务中的实践应用。文章强调Rabb

weixin_45919016的博客 1230

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【RabbitMQ】RabbitMQ中核心概念交换机(Exchange)、队列(Queue)和路由键(Routing Key)等详细介绍

RabbitMQ 是一个消息代理系统,使用交换机(Exchange)、队列(Queue)和路由键(Routing Key)来管理消息的传递。它们分别起到不同的作用,构成了消息从生产者到消费者的传递路径。

No8g攻城狮的博客 2316

RabbitMQ消息队列

目录 一、背景介绍 什么叫消息队列 为何用消息队列 消息模型 二、RabbitMQ 基本概念 RabbitMQ 内部结构 交换机(Exchange) 补充说明: 队列(Queue) 绑定(Binding) 一、背景介绍 RabbitMQ是一个由erlang语言开发的AMQP(Advanced Message Queue )的开源实现中的一种,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,..

拾一二的博客 2913

RabbitMq 基础

RabbitMQ 是一个开源的消息代理(message broker)软件,也称为队列服务器(queue server),它允许你通过网络发送和接收消息。它是遵循AMQP(高级消息队列协议,Advanced Message Queuing Protocol)标准实现的消息中间件。

2301_80035594的博客 5376

消息队列RabbitMQ学习笔记

消息队列MQ 第一次做笔记,不足之处希望留言指正,后面会继续改进* 1.为什么要用MQ 1.流量消峰 2.应用解耦 ​ 当一个业务有多个系统调用组成时,任何一个子系统出现故障都会导致整个业务操作异常。而将这个操作转变成基于消息队列的方式后,系统间的调用被解耦。一些需要处理的信息缓存在消息队列,这样就不会导致一个子系统出现问题而整个系统异常 3.异步处理 2.MQ分类 1.ActiveMq, 2.KafKa,大数据处理常用,吞吐量高(百万级) 缺点: 3.RocketMQ RabbitMq Rabb

weixin_45717638的博客 1094

RabbitMQ如何保证发送的消息可靠(重要)

RabbitMQ如何保证发送的消息可靠(RabbitMQ的Confirm模式和2.Return模式)

qq_46112274的博客 2354

5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明

在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。

weixin_61635597的博客 1538

通过物流分拣系统来理解RabbitMQ的消息机制

想象一个物流分拣系统,包裹穿梭于不同的分拣中心和配送站,最后精准地送达客户手中。RabbitMQ的消息传递机制就像这样的物流系统!

weixin_53132064的博客 1355

RabbitMQ简介和交换机入门使用

一、RabbitMQ简介 1、什么是MQ 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。 1)为什么会产生消息队列?有几个原因: 不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进...

Charge8的博客 846
上一篇: C#实现RabbitMQ消息持久化
下一篇: Redis的持久化功能
东百牧码人
博客等级 码龄12年 512粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值