当前位置:首页 > 科技  > 软件

SpringBoot整合RabbitMQ延迟队列&优先级队列详解

来源: 责编: 时间:2023-08-09 23:02:57 501观看
导读延迟队列延迟队列:简单说就是发送出去的消息经过给定的时间后,消费者才能看见消息(消费消息)。这里简单说下步骤:创建一个队列,如:bs-queue, 设置死信交换机(死信交换机路由key(这是可选的))及队列,如:dead-exchange; 消息的消费端

延迟队列

延迟队列:简单说就是发送出去的消息经过给定的时间后,消费者才能看见消息(消费消息)。Gce28资讯网——每日最新资讯28at.com

这里简单说下步骤:Gce28资讯网——每日最新资讯28at.com

  1. 创建一个队列,如:bs-queue, 设置死信交换机(死信交换机路由key(这是可选的))及队列,如:dead-exchange; 消息的消费端监听该dead-queue队列。设置消息有效期参数x-message-ttl参数(值为自己需要延迟的时间,单位:毫秒)。
  2. 发送消息发送到bs-queue上。由于消息消费端监听的是死信队列,所以只需要等待指定的时间后消息会自动被转发到死信队列上(dead-queue)。
  3. 消息的消费端监听dead-queu队列即可。

优先级队列

优先级队列是在RabbitMQ3.5.0之后的版本才支持的。Gce28资讯网——每日最新资讯28at.com

具有高优先级的队列具有高的优先权,优先级高的消息具备优先被消费的特权。Gce28资讯网——每日最新资讯28at.com

队列的优先级通过x-max-priority参数设置。Gce28资讯网——每日最新资讯28at.com

建立一个priority-exchange交换机,类型:direct。Gce28资讯网——每日最新资讯28at.com

图片图片Gce28资讯网——每日最新资讯28at.com

建立一个priority-queue队列,并与priority-exchange绑定。Gce28资讯网——每日最新资讯28at.com

图片图片Gce28资讯网——每日最新资讯28at.com

设置x-max-priority参数的值为100,表示最大优先级为100。Gce28资讯网——每日最新资讯28at.com

注意:x-max-priority参数的值应该介于1到255。建议使用1到10之间的队列。如果设置的优先级更大将使用更多的Erlang进程消耗更多的CPU资源。运行时调度也会受到影响。Gce28资讯网——每日最新资讯28at.com

接下来演示优先级队列Gce28资讯网——每日最新资讯28at.com

我们先只发送消息,然后再把消息的消费功能打开。Gce28资讯网——每日最新资讯28at.com

发送消息接口:Gce28资讯网——每日最新资讯28at.com

@GetMapping("/sendPriority")public Object sendPriority(String msg, Integer priority) {  ms.sendPriorityQueue(msg, priority) ;  return "success" ;}public void sendPriorityQueue(String msg, Integer priority) {  logger.info("准备发送消息:{}", msg);  Message message = MessageBuilder.withBody(msg.getBytes()).setPriority(priority).build() ;  rabbitTemplate.convertAndSend("priority-exchange", "pe.msg", message) ;}

发送4条消息:Gce28资讯网——每日最新资讯28at.com

// 第一条消息msg=第一条消息&priority=2 // 第二条消息msg=第二条消息&priority=10// 第三条消息msg=第三条消息&priority=1// 第四条消息msg=第四条消息&priority=7

查看消息队列:Gce28资讯网——每日最新资讯28at.com

图片图片Gce28资讯网——每日最新资讯28at.com

消息消费端:Gce28资讯网——每日最新资讯28at.com

@RabbitListener(queues = { "priority-queue" })@RabbitHandlerpublic void listenerPriority(Message message, Channel channel) {  System.out.println("接受到消息.....income");  byte[] body = message.getBody();  MessageProperties mps = message.getMessageProperties();  String content = new String(body, Charset.forName("UTF-8"));  try {    System.out.println("接受到消息来自交换机: 【" + mps.getReceivedExchange() + "】, 队列:【" + mps.getConsumerQueue()+ "】:/n内容: " + content);    channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);  } catch (Exception e) {    e.printStackTrace();    try {      channel.basicReject(mps.getDeliveryTag(), false);    } catch (IOException e1) {      e1.printStackTrace() ;    }  }}

启动服务Gce28资讯网——每日最新资讯28at.com

图片图片Gce28资讯网——每日最新资讯28at.com

根据打印出的结果,正好是我们设置优先级的顺序输出。Gce28资讯网——每日最新资讯28at.com

上面设置的消息优先级都是在指定的范围<100,如果消息的优先级超过这个值会怎么样呢?Gce28资讯网——每日最新资讯28at.com

发送8条消息:Gce28资讯网——每日最新资讯28at.com

// 第一条消息msg=第一条消息&priority=2 // 第二条消息msg=第二条消息&priority=10// 第三条消息msg=第三条消息&priority=1// 第四条消息msg=第四条消息&priority=7// 第五条消息msg=第五条消息&priority=101

消费消息:Gce28资讯网——每日最新资讯28at.com

图片图片Gce28资讯网——每日最新资讯28at.com

同样是按照顺序输出的。Gce28资讯网——每日最新资讯28at.com


Gce28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-5153-0.htmlSpringBoot整合RabbitMQ延迟队列&amp;优先级队列详解

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 如何使用Asp.net Core实现定时任务,轻松解决任务调度问题!

下一篇: SpringBoot3进阶用法,你学会了吗?

标签:
  • 热门焦点
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz&ldquo;难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?&rdquo;这一番话,出自百合网联合创
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、&ldquo;Ringdoll戒之人形&rdquo;淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • 机构称Q2国内智能手机销量同比下滑4% vivo份额重回第1

    7月29日消息,根据市场调查机构Counterpoint Research公布的最新报告,2023年第2季度中国智能手机销量同比下降4%,创新自2014年以来第2季度销量新低。报
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
Top