RabbitMQ 2023面试5题(二)

这篇具有很好参考价值的文章主要介绍了RabbitMQ 2023面试5题(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、RabbitMQ交换机类型有哪些?分别有什么作用?

在RabbitMQ中,交换机(Exchange)是消息队列系统中的一个重要组件,它用于接收生产者发送的消息并将消息路由到队列中。RabbitMQ提供了多种交换机类型,每种类型都有不同的作用。以下是RabbitMQ支持的交换机类型及它们的作用:

  1. 直接交换机(Direct Exchange):这是RabbitMQ默认的交换机类型。生产者将消息发送到交换机,交换机根据消息的路由键(Routing Key)将消息路由到对应的队列中。如果队列不存在,则消息会被丢弃。
  2. 主题交换机(Topic Exchange):这种类型的交换机根据消息的路由键进行模糊匹配,类似于主题筛选。可以将消息发送到多个队列,或者根据队列订阅的主题过滤消息。
  3. 扇形交换机(Fanout Exchange):这种类型的交换机将接收到的消息广播到所有绑定到该交换机的队列中,不根据路由键进行路由。当需要将消息发送到多个队列时,可以使用扇形交换机。
  4. 头部分类交换机(Headers Exchange):这种类型的交换机根据消息的头部属性进行路由,而不是根据路由键。它允许根据消息的自定义属性进行路由。
  5. 默认交换机(Default Exchange):这是直接交换机的默认别名,用于在没有指定交换机类型时使用。默认交换机按照直接交换机的规则进行路由。
  6. 死信交换机(Dead Letter Exchange,DLX):这种类型的交换机用于接收被其它队列拒绝或者超时等问题而被“死亡”的消息,然后再将这些消息转发到其它的队列中进行处理。可以使用插件rabbitmq_delayed_message_exchange来实现死信队列解锁库存的功能。

二、RabbitMQ发送消息的基本原理

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把邮件放在邮箱里时,你可以确定邮差先生最终会把邮件发送给你的收件人。在这个比喻中,RabbitMQ是邮政信箱、邮局和邮递员。RabbitMQ与邮局的主要区别是它不处理纸张,而是接受、存储和转发数据消息的二进制数据块。

RabbitMQ的工作原理可以通过下面这个简单的图来说明:

  1. 生产者将消息发送到队列,消息被存储在内存缓冲区中;
  2. 消息队列代理监听队列,当有消息到达时,它将消息写入磁盘上的消息日志文件中;
  3. 消费者从队列中获取消息,从磁盘上的消息日志文件中读取;
  4. 消息被处理后,可以保存在消费者的接收队列中,等待进一步处理;
  5. 如果消息需要被确认,消费者可以向消息队列代理发送确认消息;
  6. 消息队列代理将确认消息发送回生产者,通知它消息已经被成功处理。

三、RabbitMQ有哪些组件

  1. Exchange:用于将消息发送到队列的组件;
  2. Queue:存储消息的组件;
  3. Binding:将Exchange和Queue连接起来的组件;
  4. Connection:建立与RabbitMQ服务器的连接;
  5. Channel:用于发送和接收消息的组件;
  6. Message:存储消息的二进制数据块。

四、RabbitMQ与RocketMQ有哪些区别

RabbitMQ和RocketMQ都是消息队列系统,它们的主要区别在于以下几点:

  1. 语言支持:RabbitMQ支持多种编程语言,包括Java、Erlang、Python等;而RocketMQ则主要支持Java。

  2. 性能:RocketMQ的性能比RabbitMQ更好,因为它采用了更高效的异步通信机制。

  3. 可靠性:RabbitMQ的可靠性比RocketMQ更高,因为它采用了更多的数据备份和恢复机制。

  4. 社区活跃度:RabbitMQ的社区活跃度比RocketMQ更高,因为它已经有很长时间的历史了。

  5. 集群模式:RabbitMQ普通集群模式多台机器启动多个实例,每个机器启动一个。而RocketMQ采用分布式集群架构,可以轻松实现消息的负载均衡和故障转移。

  6. 消息确认机制:RabbitMQ有三种消息确认机制:普通发送模式、批量发送模式和异步监听模式。而RocketMQ需要真正的消费者入库成功,才会进行消费成功的确认。

五、什么是死信交换机Dead Letter Exchanges

Dead Letter Exchange其实就是一种普通的exchange,和创建其他exchange没有两样。只是在某一个设置Dead Letter Exchange的队列中有消息过期了,会自动触发消息的转发,发送到Dead Letter Exchange中去。

一个消息在满足如下条件下,会进死信路由,记住这里是路由而不是队列:

  1. 一个消息被Consumer拒收了,并且reject方法的参数里requeue是false。也就是说不会被再次放在队列里,被其他消费者使用。(basic.reject/ basic.nack)requeue=false
  2. 消息的TTL到了,消息过期了。
  3. 队列的长度限制满了。排在前面的消息会被丢弃或者扔到死信路由上

如果一个队列配置了dead-letter-exchange属性,并绑定了一个死信交换机,那么当队列中的消息成为死信时,它将被重新发送到该死信交换机。死信交换机可以是一个普通的交换机,你可以将它绑定到其他队列上,以定义对死信消息的处理逻辑。文章来源地址https://www.toymoban.com/news/detail-507291.html

到了这里,关于RabbitMQ 2023面试5题(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合RabbitMQ,三种交换机类型示例

    在application.properties或application.yml中配置RabbitMQ服务器的连接参数: 4.1、DirectExchange(直连交换机) 消费者 生产者 测试 一个交换机对多个队列的特点: 一个队列对多个消费者特点: 4.2、FanoutExchange(扇形/广播交换机) 消费者 生产者 4.3、TopicExchange(主题交换机) 消费者 生

    2024年04月12日
    浏览(35)
  • 【图解RabbitMQ-6】说说交换机在RabbitMQ中的四种类型以及使用场景

    🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······ 😎人生感悟:尝尽人生百味,方知世间冷暖。

    2024年02月07日
    浏览(79)
  • 【学习日记2023.6.19】 之 RabbitMQ服务异步通信_消息可靠性_死信交换机_惰性队列_MQ集群

    消息队列在使用过程中,面临着很多实际问题需要思考: 消息从发送,到消费者接收,会经历多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收

    2024年02月11日
    浏览(60)
  • RabbitMQ 备份交换机和死信交换机

      为处理生产者将消息推送到交换机中,交换机按照消息中的路由键及自身策略无法将消息投递到指定队列中造成消息丢失的问题,可以使用备份交换机。   为处理在消息队列中到达TTL的过期消息,可采用死信交换机进行消息转存。可以通过死信交换机的方式实现延迟队

    2024年02月14日
    浏览(52)
  • RabbitMQ之Exchange(交换机)属性及备用交换机解读

    目录 基本介绍 主要结论 备用交换机  springboot代码实战(备用交换机) 实战架构 工程概述 RabbitConfigDeal 配置类:创建队列及交换机并进行绑定  MessageService业务类:发送消息及接收消息 主启动类RabbitMq01Application:实现ApplicationRunner接口 在 RabbitMQ 中,交换机主要用来将生产

    2024年02月02日
    浏览(51)
  • 【RabbitMQ】RabbitMQ的交换机

    在上文中, 都没有交换机,生产者直接发送消息到队列。 而一旦引入交换机,消息发送的模式会有很大变化:可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面,接收生

    2024年03月12日
    浏览(56)
  • 【RabbitMQ(day3)】扇形交换机和主题交换机的应用

    扇型交换机将消息路由给绑定到它身上的所有队列,而不会理会绑定的路由键。如果 N 个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的拷贝分别发送给这所有的 N 个队列。扇型用来交换机处理消息的广播路由。 因为扇型交换机投递信息的

    2024年02月14日
    浏览(49)
  • RabbitMQ交换机

    (1)接收publisher发送消息 (2)将消息按照规则路由到与之绑定的队列 (1)Fanout(广播) Fanout Exchange会将接受到的消息广播到每一个跟其绑定的queue,所以也叫广播模式 (2)Direct(定向) Direct Exchange会将接收到的消息根据规则路由到指定的Queue,因此称为定向路由 每一个

    2024年01月19日
    浏览(45)
  • RabbitMQ之交换机

    目录 前言 一.关于交换机 1.交换机工作原理 2.交换机类型及路由规则 二.交换机实战讲解 1.直连交换机 2.主题交换机 3.扇形交换机 总结 RabbitMQ 中的交换机(Exchange)是消息的分发中心,负责将消息发送到一个或多个队列。它接收生产者发送的消息并将这些消息路由到消息队列

    2024年01月25日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包