点击上方“业余草”,选择“置顶公众号”

第一时间获取技术干货和业界资讯!

消息中间件在各个大厂都有使用,算是现在面试过程中必问的一个知识点了。昨天,微信群里有一位网友说,面试官问我 RabbitMQ 消息如何插队?求大家科普如何做!

群里一直同意和谐社会,拒绝插队。但是在特殊情况下是可以插队的,比如医院里的急诊等。那么 RabbitMQ 消息该如何插队呢?


这个问题很简单,RabbitMQ 有优先队列。所以,RabbitMQ 消息队列优先级就可以用来解决“插队”问题。

生产者生成消息打到交换机里面(如果没有声明交换机,会打到 default exchange 里面),交换机绑定一个或多个队列,消息进入队列里面,消费者一直在监听队列,发现队列里面有消息就开始消费,这里就是一个消息传递的过程,queue 是一个栈队列,队列是先进先出的,就是说消息来了依次排队,一个队列并不能实现消息的插队和优先推送的功能。但是如果说我们的多个队列有不同的优先级,不同优先级的消息通过 roatingkey 进入不同的队列,优先级高的队列消息被优先消费,这样也能形成一个相对意义上的优先级,所以说这里不是消息的优先级而是队列的优先级。

明白了这个之后,你就知道如何回答面试官了。RabbitMQ 的消息是不能插队的,但是它提供的有优先队列。插队就是要靠高优先级的队列来实现。

在 RabbitMQ 中,设置消息的优先级一共有 2 个步骤:设置队列的 x-max-priority 参数;设置消息的 Priority 参数。

就这么简单,做完这个之后就可以验证优先级队列的作用。当然,需要注意的是,在消费端速度大于生产端速度,且 broker 中没有消息堆积的话,对发送的消息设置优先级也没什么实际意义,因为发送端刚发送完一条消息就被消费端消费了,那么就相当于 broker 至多只有一条消息,那么对于单条消息来说优先级是没有什么意义的。

以上,希望能够帮助到大家!另外如果有人愿意一起精进,请加我微信小号:xttblog。

面试官问我 RabbitMQ 消息如何插队?相关推荐

  1. 【067期】面试官问:说说常见的加密算法、原理、优缺点及用途?

    >>号外:关注"Java精选"公众号,回复"面试资料",免费领取资料!"Java精选面试题"小程序,3000+ 道面试题在线刷, ...

  2. 【146期】面试官问:说一说 RabbitMQ 的几种工作模式和优化建议?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方留言必回,有问必答! 每天 08:00 更新文章,每天进步一点点... 1.组 ...

  3. 关于使用消息队列今天被面试官问倒了

    为什么使用消息队列 其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么? 面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务 ...

  4. 面试官问:Kafka 会不会丢消息?怎么处理的?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! Kafka存在丢消息的问题,消息丢失会发生在Broker, ...

  5. 【240期】面试官问:说说基于 Redis 实现延时队列服务?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  6. 拼多多面试官没想到RabbitMQ我早就入门了,人直接傻掉

    拼多多面试官没想到RabbitMQ我早就入门了,人直接傻掉. 人一辈子最值得炫耀的不应该是你的财富有多少(虽然这话说得有点违心,呵呵),而是你的学习能力.技术更新迭代的速度非常快,那作为程序员,我们就 ...

  7. 当面试官问我ArrayList和LinkedList哪个更占空间时,我这么答让他眼前一亮

    前言 今天介绍一下Java的两个集合类,ArrayList和LinkedList,这两个集合的知识点几乎可以说面试必问的. 对于这两个集合类,相信大家都不陌生,ArrayList可以说是日常开发中用的 ...

  8. 你以为面试官问的是分布式缓存,其实他想问……

    最近一个哥们去面试某当红大厂了,其中几个他印象深刻的面试题你们品品: 1.介绍下如何对MySQL SQL语句进行分析和优化? 2.Redis 怎样实现的分布式锁? 3.如何实现本地缓存和分布式缓存? ...

  9. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  10. 面试官问:在读多写少的情况下,如何优化 MySQL 的数据查询方案

    作者 | 面试官问     责编 | 张文 来源 | 面试官问(ID:interviewer_asked) 面试官问:假设你负责的某业务在双十一期间要搞运营活动,公司投入了大量的营销费用进行推广,此举 ...

最新文章

  1. 如何利用计算机解决问题,《用计算机解决问题的一般步骤》讲课教案
  2. 用一个按钮做主窗口,可以吗?
  3. python 句子中没有中文_人生感悟经典句子,生活中可以没有诗歌,但不能没有诗意...
  4. HW RIPv2认证
  5. Linux下配置静态IP地址,设置DNS和主机名
  6. 解决两个WINDOWS10的卡死问题
  7. iOS锁屏代码注意使用新接口
  8. VMware安装虚拟机操作步骤[史上最详细]
  9. pytorch模型加密
  10. vue.js微信公众号登录,获取当前用户openid等基本信息
  11. 华为+android+root权限获取root,华为root权限获取的方法有哪些【图文】
  12. 浏览器使用:chrome谷歌浏览器网页截图capture+火狐浏览器的历史在哪?
  13. Java【汉诺塔问题】详细图文解析, 包教包会
  14. 如何安装My SQL
  15. 公司里的技术总监CTO,天天都在干些啥?
  16. 读《我能记住 - 读写记忆困难儿童实战》
  17. 微信小程序—自定义组件
  18. Vista不是黄金甲
  19. 忘记oracle管理员密码了,解决oracle数据库忘记系统管理员密码
  20. Matlab进行射频TRL校准,如何使用TRL校准方式进行波导校准?

热门文章

  1. PHP 获取格式化的日期和时间
  2. PHP中 sprintf()格式化输出详解
  3. Studio e.go!全游戏 CG100%+回想存档包
  4. typeScript构建失败:Non-string value passed to `ts.resolveTypeReferenceDirective`
  5. 【云原生|实战研发】2:Pod的深入实践与理解
  6. Esp8266 Node Mcu 一直乱码的问题详解
  7. gen-cpp/.deps/ChildService.Plo: No such file or directory
  8. oracle sql 常用语句大全,SQL常用语句大全
  9. python教程马哥_【60集全】全新马哥教育 运维必备python基础语法全讲解_IT教程网...
  10. excel单元格内换行的方法