论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
物联网
›
物联网
›
【RabbitMQ】RabbitMQ中焦点概念交换机(Exchange)、队 ...
【RabbitMQ】RabbitMQ中焦点概念交换机(Exchange)、队列(Queue)和路由 ...
知者何南
金牌会员
|
2024-12-30 08:31:48
|
显示全部楼层
|
阅读模式
楼主
主题
818
|
帖子
818
|
积分
2454
博主先容
:全网粉丝21W+,CSDN博客专家、Java范畴优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术范畴
技术范围
:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
感爱好的可以先关注收藏起来,在工作中、生存上等碰到相关问题都可以给我留言咨询,希望帮助更多的人。
RabbitMQ中焦点概念交换机(Exchange)、队列(Queue)和路由键(Routing Key)等详细先容
一、概览
二、焦点概念
2.1 交换机(Exchange)
2.2 队列(Queue)
2.3 路由键(Routing Key)
2.4 消息的发送流程通常
三、 RabbitMQ其他概念
3.1 死信队列
3.2 队列类型
RabbitMQ 是一个消息代理系统,利用 交换机(Exchange)、 队列(Queue)和 路由键(Routing Key)来管理消息的传递。它们分别起到差别的作用,构成了消息从生产者到消费者的传递路径。它们一起协同工作来实现消息的发布和订阅。
一、概览
三者的区别和作用总结
名称
作用和功能
角色
区别
交换机(Exchange)
接收生产者的消息并根据路由键将消息发送到一个或多个队列。交换机自己不生存消息,只负责转发消息。
中间人
决定消息如何分发到差别的队列
队列(Queue)
用于存储消息,等待消费者来处理处罚。消费者从队列中拉取消息举行处理处罚。队列是消息的终极接收点,消息只能在队列中被消费一次。
消费者尽头
存储和传递消息
路由键(Routing Key)
生产者指定的一个字符串,用来决定交换机如何将消息路由到队列。路由键可以是精确匹配或含糊匹配(利用通配符)。
消息路由控制
决定消息走向哪些队列
三者之间的关系
生产者(Producer):向 交换机 发送消息,并指定一个 路由键。
交换机(Exchange):根据绑定的规则和 路由键,将消息转发到符合的 队列。
队列(Queue):消息终极到达 队列,并等待消费者取出并处理处罚。
消费者(Consumer):从队列中取出消息举行处理处罚。
二、焦点概念
RabbitMQ 是一个开源的消息代理(Message Broker),用于在应用程序之间传递消息。它实现了高级消息队列协议(AMQP),提供了可靠的消息传递和消息路由机制,以支持分布式系统的开发。
2.1 交换机(Exchange)
作用:
交换机负责接收来自生产者的消息,并根据一定的路由规则将消息分发给一个或多个队列。它是生产者和队列之间的中间层,生产者永远不会直接将消息发送到队列,而是通过交换机。
种类:
RabbitMQ 中有几种类型的交换机,每种交换机的消息路由行为都差别:
Direct(直连交换机):根据精确匹配路由键(Routing Key)来将消息转发到绑定了相同路由键的队列。
Fanout(扇出交换机):不处理处罚路由键,直接将消息广播给绑定到该交换机的所有队列。雷同广播机制。
Topic(主题交换机):根据路由键的模式匹配(可以利用通配符)将消息路由到符合条件的队列。
Headers(头交换机):根据消息的 headers(头部信息)属性来路由,而不是利用路由键。
作用场景:
交换机的重要作用是 决定消息应该被发送到哪些队列,每种交换机的类型决定了消息的路由逻辑。
2.2 队列(Queue)
作用:
队列是消息的实际存储位置。消息被发送到队列后,消费者从队列中取出并处理处罚。队列中的消息按照 先辈先出(FIFO) 的次序被消费者处理处罚。
队列是点对点通信的尽头
,消费者从队列中拉取消息并处理处罚,每个消息只会被一个消费者处理处罚(除非有特别的广播机制)。
消息可以在队列中恒久化(恒久化队列)
,纵然 RabbitMQ 服务器重启,消息仍然会生存在队列中。
作用场景:
队列的作用是 存储和传递消息。消息在队列中被生存,直到消费者来获取和处理处罚消息。队列可以支持多种消费者,并且保证消息被处理处罚一次且仅一次。
2.3 路由键(Routing Key)
作用:
路由键是生产者在将消息发送给交换机时提供的一个字符串,用来指定消息的路由路径。交换机会根据路由键的内容,决定该消息应该发送到哪些队列。
在 Direct 交换机 中,路由键用于精确匹配。例如,路由键 task_queue 只会将消息发送到绑定了 task_queue 路由键的队列。
在 Topic 交换机 中,路由键可以利用通配符举行含糊匹配。例如,device.* 可以匹配 device.data 和 device.status,而 device.# 可以匹配多个词。
作用场景:
路由键的作用是 指定消息传递路径。交换机会根据路由键将消息发送到符合条件的队列。
2.4 消息的发送流程通常
消息的发送流程通常如下:
生产者发布消息,指定交换机和路由键。
交换机根据路由键将消息路由到一个或多个队列。
消费者从队列中获取消息并处理处罚它们。
通过这种方式,RabbitMQ实现了消息的可靠传递和分发,可以用于构建各种应用程序,包括消息队列、发布/订阅系统、任务分发等。
三、 RabbitMQ其他概念
AMQP:AMQP(Advanced Message Queuing Protocol)是一种协议,用于定义消息传递的规范。RabbitMQ是AMQP协议的一个盛行实现之一,它允许差别的应用程序之间通过消息举行通信。
以下是一些关于 RabbitMQ 的详细知识:
生产者:生产者是消息的发送方。它们创建消息并将其发布到 RabbitMQ 的交换机上。生产者通常将消息发送到一个或多个队列,以便消费者可以订阅并处理处罚这些消息。
交换机:交换机是消息的路由中心,它接收从生产者发送的消息,并根据预定义的规则将它们路由到一个或多个队列中。RabbitMQ支持多种类型的交换机,包括直连、主题、扇出和头交换机。
队列:队列是消息的容器,它们用于存储消息,直到消费者准备好接收和处理处罚它们。多个消费者可以订阅同一个队列,但只有一个消费者会接收到每条消息。
消费者:消费者是消息的接收方,它们订阅队列并从中获取消息。一旦消费者接收到消息,它们可以对消息举行处理处罚,例如实行某些任务或将数据存储到数据库中。
绑定:绑定是交换机和队列之间的关联关系。它定义了如何将消息从交换机路由到队列。绑定通常利用路由键(Routing Key)来指定消息的路由规则。
捏造主机:RabbitMQ 允许创建多个捏造主机,每个捏造主机都是一个独立的消息代理环境。捏造主机之间相互隔离,允许差别应用程序在同一台 RabbitMQ 服务器上利用差别的消息队列。
恒久化:消息和队列可以设置为恒久化,这意味着它们将在 RabbitMQ 服务器重启后生存。这是确保消息不会丢失的重要方式,特别是对于关键的应用程序。
确认机制:RabbitMQ 提供了消息确认机制,确保消息在发送和接收过程中不会丢失。生产者可以等待来自消费者的确认,以确保消息已成功处理处罚。
死信队列:RabbitMQ 允许定义死信队列,用于处理处罚无法成功处理处罚的消息。当消息无法被路由到队列时,它们可以被发送到死信队列,以后举行处理处罚。
集群:RabbitMQ 支持集群模式,允许多个 RabbitMQ 服务器一起工作以进步可用性和性能。
插件系统:RabbitMQ 可以通过插件举行扩展,允许添加各种功能,如消息转换、身份验证、监控等。
RabbitMQ 是一个强盛的消息代理,广泛用于分布式系统、微服务架构、任务队列、变乱驱动架构等场景。相识这些根本概念可以更好地明白和利用 RabbitMQ 来构建可靠的消息通信系统。
3.1 死信队列
死信队列(Dead Letter Queue,简称DLQ)是消息队列系统中的一个重要概念,它用于处理处罚无法成功被消费的消息。当消息无法被消费者正常处理处罚时,通常会被发送到死信队列,以后举行进一步的处理处罚或分析。以下是有关死信队列的详细信息:
什么是死信队列:
消息在队列中过期,即超过了一定的存活时间。
消息被拒绝(NACK)并且无法重新投递。
消息在消费者处理处罚时发生了异常。
死信队列是一个特别的队列,用于接收无法被消费者成功处理处罚的消息。这些消息被认为是"死信",通常是由于以下缘故原由之一:
为什么利用死信队列:
死信队列的重要目的是处理处罚消息处理处罚失败或异常情况,以防止消息丢失。通过将死信消息路由到特定的队列,你可以举行进一步的调查、日志纪录、错误处理处罚或重试。
死信队列还可以用于耽误消息处理处罚,例如在一段时间后重新实验处理处罚失败的消息。
设置死信队列:
要设置死信队列,你需要创建一个普通队列,并为它配置一个死信交换机(Dead Letter Exchange)和一个死信路由键(Dead Letter Routing Key)。
当消息成为死信时,它们将被重新路由到死信交换机,并利用死信路由键发送到死信队列。
应用场景:
重试机制:当消息处理处罚失败时,可以将消息发送到死信队列,然后在稍后的时间内重新实验处理处罚。
日志纪录和监控:可以将失败的消息纪录到日志中以举行分析和监控。
错误处理处罚:可以通过死信队列实行自定义错误处理处罚逻辑,例如发送关照或触发报警。
死信队列可以用于处理处罚各种应用场景,例如:
总之,死信队列是消息队列系统中的一个关键组件,用于处理处罚处理处罚失败的消息,以进步系统的可靠性和容错性。通过合理配置和利用死信队列,可以更好地管理消息的生命周期和处理处罚失败情况。差别的消息队列系统(如RabbitMQ、Kafka等)都支持死信队列的概念,但详细的配置和用法可能有所差别。
3.2 队列类型
消息队列系统通常支持多种队列类型,每种类型都适用于差别的利用场景和需求。以下是一些常见的队列类型及其特点:
FIFO 队列(First-In-First-Out):
特点:消息按照它们进入队列的次序举行处理处罚,即先辈先出。
用途:适用于需要按照次序处理处罚消息的场景,确保消息的次序性。
优先级队列:
特点:消息可以分配差别的优先级,高优先级的消息将被优先处理处罚。
用途:适用于需要按照优先级处理处罚消息的场景,确保高优先级消息能够尽快处理处罚。
耽误队列(Delay Queue):
特点:消息可以设置耽误时间,在指定时间后才会被处理处罚。
用途:适用于需要耽误处理处罚消息的场景,如定时任务或消息重试。
扇出队列(Fanout Queue):
特点:消息被广播到所有绑定的队列,每个队列都会接收一份消息的副本。
用途:用于发布/订阅模式,消息广播到多个消费者,每个消费者都可以独立处理处罚消息。
主题队列(Topic Queue):
特点:消息根据主题或通配符路由到匹配的队列。
用途:用于高度机动的消息路由,支持复杂的消息过滤和匹配规则。
直连队列(Direct Queue):
特点:消息根据指定的路由键路由到匹配的队列。
用途:用于简朴的消息路由,每个队列通常与一个唯一的路由键相关联。
恒久队列:
特点:队列和消息可以设置为恒久化,确保在消息代理重启后不会丢失。
用途:用于关键数据和任务的恒久化存储,确保数据不会丢失。
临时队列:
特点:队列通常是临时的,只在毗连期间存在,毗连断开后会自动删除。
用途:适用于一次性任务或短期通信的场景。
死信队列(Dead Letter Queue):
特点:用于处理处罚无法成功处理处罚的消息,将失败的消息发送到死信队列以后续处理处罚。
用途:用于处理处罚失败的消息,实行错误处理处罚或重试。
差别的队列类型适用于差别的业务需求和应用场景。在选择队列类型时,需要根据详细需求来衡量各种特性和限制。根据消息队列系统的差别,支持的队列类型和功能可能有所差别。
好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!??
本文完结!
祝各位大佬和小伙伴身体康健,万事如意,发财暴富,扫下方二维码与我一起交流!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
知者何南
金牌会员
这个人很懒什么都没写!
楼主热帖
开源二三事|ShardingSphere 与 Databa ...
SQLServer数据库基础教程
Sqlserver创建用户并授权
华为再次登上央视!鸿蒙系统3.0今年上 ...
这个简单的小功能,半年为我们产研团队 ...
「笔记」某移动SRE运维体系交流 ...
Oracle调度器Scheduler
编程体验1
ESP32-C3 学习测试 蓝牙 篇(六、添加 ...
C++面试八股文:C++中,函数的参数应该 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表