ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【RabbitMQ】RabbitMQ中焦点概念交换机(Exchange)、队列(Queue)和路由 [打印本页]

作者: 知者何南    时间: 2024-12-30 08:31
标题: 【RabbitMQ】RabbitMQ中焦点概念交换机(Exchange)、队列(Queue)和路由
博主先容:全网粉丝21W+,CSDN博客专家、Java范畴优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术范畴
  技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
  感爱好的可以先关注收藏起来,在工作中、生存上等碰到相关问题都可以给我留言咨询,希望帮助更多的人。
  RabbitMQ中焦点概念交换机(Exchange)、队列(Queue)和路由键(Routing Key)等详细先容


RabbitMQ 是一个消息代理系统,利用 交换机(Exchange)、 队列(Queue)和 路由键(Routing Key)来管理消息的传递。它们分别起到差别的作用,构成了消息从生产者到消费者的传递路径。它们一起协同工作来实现消息的发布和订阅。
一、概览

三者的区别和作用总结
名称
作用和功能
角色
区别
交换机(Exchange)
接收生产者的消息并根据路由键将消息发送到一个或多个队列。交换机自己不生存消息,只负责转发消息。
中间人
决定消息如何分发到差别的队列
队列(Queue)
用于存储消息,等待消费者来处理处罚。消费者从队列中拉取消息举行处理处罚。队列是消息的终极接收点,消息只能在队列中被消费一次。
消费者尽头
存储和传递消息
路由键(Routing Key)
生产者指定的一个字符串,用来决定交换机如何将消息路由到队列。路由键可以是精确匹配或含糊匹配(利用通配符)。
消息路由控制
决定消息走向哪些队列
三者之间的关系

二、焦点概念

RabbitMQ 是一个开源的消息代理(Message Broker),用于在应用程序之间传递消息。它实现了高级消息队列协议(AMQP),提供了可靠的消息传递和消息路由机制,以支持分布式系统的开发。
2.1 交换机(Exchange)

作用:
交换机负责接收来自生产者的消息,并根据一定的路由规则将消息分发给一个或多个队列。它是生产者和队列之间的中间层,生产者永远不会直接将消息发送到队列,而是通过交换机。
种类:
RabbitMQ 中有几种类型的交换机,每种交换机的消息路由行为都差别:

作用场景:
交换机的重要作用是 决定消息应该被发送到哪些队列,每种交换机的类型决定了消息的路由逻辑。
2.2 队列(Queue)

作用:
队列是消息的实际存储位置。消息被发送到队列后,消费者从队列中取出并处理处罚。队列中的消息按照 先辈先出(FIFO) 的次序被消费者处理处罚。

作用场景:
队列的作用是 存储和传递消息。消息在队列中被生存,直到消费者来获取和处理处罚消息。队列可以支持多种消费者,并且保证消息被处理处罚一次且仅一次。
2.3 路由键(Routing Key)

作用:
路由键是生产者在将消息发送给交换机时提供的一个字符串,用来指定消息的路由路径。交换机会根据路由键的内容,决定该消息应该发送到哪些队列。

作用场景:
路由键的作用是 指定消息传递路径。交换机会根据路由键将消息发送到符合条件的队列。
2.4 消息的发送流程通常

消息的发送流程通常如下:
   
  通过这种方式,RabbitMQ实现了消息的可靠传递和分发,可以用于构建各种应用程序,包括消息队列、发布/订阅系统、任务分发等。
  三、 RabbitMQ其他概念

AMQP:AMQP(Advanced Message Queuing Protocol)是一种协议,用于定义消息传递的规范。RabbitMQ是AMQP协议的一个盛行实现之一,它允许差别的应用程序之间通过消息举行通信。
以下是一些关于 RabbitMQ 的详细知识:

RabbitMQ 是一个强盛的消息代理,广泛用于分布式系统、微服务架构、任务队列、变乱驱动架构等场景。相识这些根本概念可以更好地明白和利用 RabbitMQ 来构建可靠的消息通信系统。
3.1 死信队列

死信队列(Dead Letter Queue,简称DLQ)是消息队列系统中的一个重要概念,它用于处理处罚无法成功被消费的消息。当消息无法被消费者正常处理处罚时,通常会被发送到死信队列,以后举行进一步的处理处罚或分析。以下是有关死信队列的详细信息:
什么是死信队列:
消息在队列中过期,即超过了一定的存活时间。
消息被拒绝(NACK)并且无法重新投递。
消息在消费者处理处罚时发生了异常。
死信队列是一个特别的队列,用于接收无法被消费者成功处理处罚的消息。这些消息被认为是"死信",通常是由于以下缘故原由之一:
为什么利用死信队列:
死信队列的重要目的是处理处罚消息处理处罚失败或异常情况,以防止消息丢失。通过将死信消息路由到特定的队列,你可以举行进一步的调查、日志纪录、错误处理处罚或重试。
死信队列还可以用于耽误消息处理处罚,例如在一段时间后重新实验处理处罚失败的消息。
设置死信队列:
要设置死信队列,你需要创建一个普通队列,并为它配置一个死信交换机(Dead Letter Exchange)和一个死信路由键(Dead Letter Routing Key)。
当消息成为死信时,它们将被重新路由到死信交换机,并利用死信路由键发送到死信队列。
应用场景:
重试机制:当消息处理处罚失败时,可以将消息发送到死信队列,然后在稍后的时间内重新实验处理处罚。
日志纪录和监控:可以将失败的消息纪录到日志中以举行分析和监控。
错误处理处罚:可以通过死信队列实行自定义错误处理处罚逻辑,例如发送关照或触发报警。
死信队列可以用于处理处罚各种应用场景,例如:
总之,死信队列是消息队列系统中的一个关键组件,用于处理处罚处理处罚失败的消息,以进步系统的可靠性和容错性。通过合理配置和利用死信队列,可以更好地管理消息的生命周期和处理处罚失败情况。差别的消息队列系统(如RabbitMQ、Kafka等)都支持死信队列的概念,但详细的配置和用法可能有所差别。
3.2 队列类型

消息队列系统通常支持多种队列类型,每种类型都适用于差别的利用场景和需求。以下是一些常见的队列类型及其特点:

特点:消息按照它们进入队列的次序举行处理处罚,即先辈先出。
用途:适用于需要按照次序处理处罚消息的场景,确保消息的次序性。

特点:消息可以分配差别的优先级,高优先级的消息将被优先处理处罚。
用途:适用于需要按照优先级处理处罚消息的场景,确保高优先级消息能够尽快处理处罚。

特点:消息可以设置耽误时间,在指定时间后才会被处理处罚。
用途:适用于需要耽误处理处罚消息的场景,如定时任务或消息重试。

特点:消息被广播到所有绑定的队列,每个队列都会接收一份消息的副本。
用途:用于发布/订阅模式,消息广播到多个消费者,每个消费者都可以独立处理处罚消息。

特点:消息根据主题或通配符路由到匹配的队列。
用途:用于高度机动的消息路由,支持复杂的消息过滤和匹配规则。

特点:消息根据指定的路由键路由到匹配的队列。
用途:用于简朴的消息路由,每个队列通常与一个唯一的路由键相关联。

特点:队列和消息可以设置为恒久化,确保在消息代理重启后不会丢失。
用途:用于关键数据和任务的恒久化存储,确保数据不会丢失。

特点:队列通常是临时的,只在毗连期间存在,毗连断开后会自动删除。
用途:适用于一次性任务或短期通信的场景。

特点:用于处理处罚无法成功处理处罚的消息,将失败的消息发送到死信队列以后续处理处罚。
用途:用于处理处罚失败的消息,实行错误处理处罚或重试。
差别的队列类型适用于差别的业务需求和应用场景。在选择队列类型时,需要根据详细需求来衡量各种特性和限制。根据消息队列系统的差别,支持的队列类型和功能可能有所差别。
   好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!??
  本文完结!
祝各位大佬和小伙伴身体康健,万事如意,发财暴富,扫下方二维码与我一起交流!!!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4