成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot整合RabbitMQ延遲隊列&優(yōu)先級隊列詳解

開發(fā) 架構(gòu)
發(fā)送消息發(fā)送到bs-queue上。由于消息消費端監(jiān)聽的是死信隊列,所以只需要等待指定的時間后消息會自動被轉(zhuǎn)發(fā)到死信隊列上(dead-queue)。

延遲隊列

延遲隊列:簡單說就是發(fā)送出去的消息經(jīng)過給定的時間后,消費者才能看見消息(消費消息)。

這里簡單說下步驟:

  1. 創(chuàng)建一個隊列,如:bs-queue, 設(shè)置死信交換機(死信交換機路由key(這是可選的))及隊列,如:dead-exchange; 消息的消費端監(jiān)聽該dead-queue隊列。設(shè)置消息有效期參數(shù)x-message-ttl參數(shù)(值為自己需要延遲的時間,單位:毫秒)。
  2. 發(fā)送消息發(fā)送到bs-queue上。由于消息消費端監(jiān)聽的是死信隊列,所以只需要等待指定的時間后消息會自動被轉(zhuǎn)發(fā)到死信隊列上(dead-queue)。
  3. 消息的消費端監(jiān)聽dead-queu隊列即可。

優(yōu)先級隊列

優(yōu)先級隊列是在RabbitMQ3.5.0之后的版本才支持的。

具有高優(yōu)先級的隊列具有高的優(yōu)先權(quán),優(yōu)先級高的消息具備優(yōu)先被消費的特權(quán)。

隊列的優(yōu)先級通過x-max-priority參數(shù)設(shè)置。

建立一個priority-exchange交換機,類型:direct。

圖片圖片

建立一個priority-queue隊列,并與priority-exchange綁定。

圖片圖片

設(shè)置x-max-priority參數(shù)的值為100,表示最大優(yōu)先級為100。

注意:x-max-priority參數(shù)的值應(yīng)該介于1到255。建議使用1到10之間的隊列。如果設(shè)置的優(yōu)先級更大將使用更多的Erlang進程消耗更多的CPU資源。運行時調(diào)度也會受到影響。

接下來演示優(yōu)先級隊列

我們先只發(fā)送消息,然后再把消息的消費功能打開。

發(fā)送消息接口:

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

發(fā)送4條消息:

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

查看消息隊列:

圖片圖片

消息消費端:

@RabbitListener(queues = { "priority-queue" })
@RabbitHandler
public 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內(nèi)容: " + content);
    channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
  } catch (Exception e) {
    e.printStackTrace();
    try {
      channel.basicReject(mps.getDeliveryTag(), false);
    } catch (IOException e1) {
      e1.printStackTrace() ;
    }
  }
}

啟動服務(wù)

圖片圖片

根據(jù)打印出的結(jié)果,正好是我們設(shè)置優(yōu)先級的順序輸出。

上面設(shè)置的消息優(yōu)先級都是在指定的范圍<100,如果消息的優(yōu)先級超過這個值會怎么樣呢?

發(fā)送8條消息:

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

消費消息:

圖片圖片

同樣是按照順序輸出的。


責(zé)任編輯:武曉燕 來源: Spring全家桶實戰(zhàn)案例源碼
相關(guān)推薦

2024-03-18 00:00:03

RabbitMQ代碼延遲隊列

2023-10-10 13:39:53

Spring隊列優(yōu)化

2023-09-05 15:48:14

RabbitMQ延遲隊列

2023-10-23 10:02:58

RabbitMQ延遲隊列

2021-10-15 10:39:43

RabbitMQ隊列延遲

2021-06-11 06:10:09

Python數(shù)據(jù)結(jié)構(gòu)算法

2024-03-11 07:46:40

React優(yōu)先級隊列二叉堆

2023-04-27 07:43:22

RabbitMQ重試隊列死信隊列

2024-04-19 00:47:07

RabbitMQ消息機制

2024-01-26 13:16:00

RabbitMQ延遲隊列docker

2024-04-28 08:52:33

RabbitMQ延遲隊列延遲插件

2010-09-01 14:10:36

CSS優(yōu)先級

2021-04-23 21:40:33

Python優(yōu)先級調(diào)度器

2021-12-08 10:47:35

RabbitMQ 實現(xiàn)延遲

2024-11-05 16:58:21

RabbitMQ訂單超時取消延遲隊列

2024-10-16 09:29:30

RabbitMQ延遲隊列

2024-12-25 09:32:06

2012-08-14 09:38:29

WAN優(yōu)化

2023-07-26 13:21:10

2024-04-23 14:13:38

開發(fā)配置文件
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲 欧美 另类 综合 偷拍 | 亚洲欧美中文日韩在线v日本 | 日韩欧美日韩在线 | 国产精品欧美一区二区三区不卡 | 免费毛片网站在线观看 | 91精品国模一区二区三区 | 亚洲国产成人精品女人久久久野战 | 亚洲激情一级片 | 动漫www.被爆羞羞av44 | aaaa一级毛片 | 全部免费毛片在线播放网站 | 成人在线一区二区 | 欧美精品一区二区在线观看 | 色吊丝2| 国产欧美精品一区二区色综合 | 国产精品一区二区无线 | 欧美精产国品一二三区 | 欧美中文字幕一区二区 | 欧美在线资源 | av成年人网站 | 99免费在线观看 | 一级黄色毛片 | 日本久久久久久 | 国产成人精品一区二区 | 精品亚洲一区二区三区 | 精品国产乱码久久久久久蜜臀 | av在线影院| 最近中文字幕第一页 | 自拍偷拍一区二区三区 | 精品久久久久久 | 成人在线视 | 亚洲欧美综合精品久久成人 | 亚洲狠狠| 久久爱综合 | 天天操,夜夜爽 | 免费的一级视频 | 插插插干干干 | 日操夜操| 日韩免费av一区二区 | 欧美第一页 | 国产又爽又黄的视频 |