国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

RocketMQ延時消息解析!你學會了嗎?

開發 前端
CommitLog?中的消息轉發到CosumeQueue中是異步進行的。在轉發過程中,會對延遲消息進行特殊處理,主要是計算這條延遲消息需要在什么時候進行投遞。

什么是延時消息?

指的是當消息寫入到Broker后,不能立刻被消費者消費,需要等待指定的時長后才可被消費處理的消息。

延時消息等級

RocketMQ延時消息的延遲時長不支持隨意時長的延遲。

  • 是通過特定的延遲等級來指定的。

默認支持18個等級的延遲消息。

延時等級定義在RocketMQ服務端的MessageStoreConfig類中的如下變量中:

// MessageStoreConfig.java
private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";

level 有以下三種情況:

  • level == 0,消息為非延遲消息。
  • 1<=level<=maxLevel,消息延遲特定時間,例如:level==1,延遲1s。
  • level > maxLevel,則level== maxLevel,例如level==20,延遲2h。

發消息時,設置delayLevel等級即可:msg.setDelayLevel(level)。

例如指定的延時等級為3,則表示延遲時長為10s,延遲等級是從1開始計數的。

使用場景

1、電商交易系統的訂單超時未支付,自動取消訂單。

2、超時自動審批,系統審批流程可以設置為超過設定時間后自動執行通過或者拒絕流程。

3、限時優惠活動,商品需要促銷,在活動開始時,發送一個兩小時后觸發的定時消息,用于在活動結束時恢復原價。

為什么不支持任意時間

按照《RocketMQ Developer Guide》中的說法:

  • 如果提供任意時間,就會涉及到消息的排序,會有一定的性能損耗。

而RocketMQ這種利用固定延遲級別到單個隊列的實現方式是一種妥協,靈活性和極致性能的妥協。

延遲消息與消費重試的關系

消息重試的16個級別,實際上是把延遲消息18個級別的前兩個Level去掉了。

事實上,RocketMQ的消息重試也是基于延遲消息來完成的。

  • 在消息消費失敗的情況下,將其重新當做延遲消息投遞回Broker。

在投遞回去時,會跳過前兩個Level,因此只重試16次。

詳細內容可以看我之前的文章!!!

實現原理

RocketMQ延時消息會暫存在名為SCHEDULE_TOPIC_XXXX的Topic中。

  • 并根據delayTimeLevel存入特定的Queue。

queueId = delayTimeLevel – 1:即一個Queue只存相同延遲的消息,保證具有相同發送延遲的消息能夠順序消費。

Broker會調度地消費SCHEDULE_TOPIC_XXXX,將消息寫入真實的Topic。

圖片圖片

主要步驟:

圖片圖片

修改消息Topic名稱和隊列信息:

RocketMQ Broker端在存儲生產者寫入的消息時,首先都會將其寫入到CommitLog中。

之后根據消息中的Topic信息和隊列信息,將其轉發到目標Topic的指定隊列(ConsumeQueue)中。

由于消息一旦存儲到ConsumeQueue中,消費者就能消費到,而延遲消息不能被立即消費。

所以將Topic的名稱修改為SCHEDULE_TOPIC_XXXX,并根據延遲級別確定要投遞到哪個隊列下。

  • 同時,還會將消息原來要發送到的目標Topic和隊列信息存儲到消息的屬性中。

轉發消息到延遲主題SCHEDULE_TOPIC_XXXX的CosumeQueue中:

CommitLog中的消息轉發到CosumeQueue中是異步進行的。

在轉發過程中,會對延遲消息進行特殊處理,主要是計算這條延遲消息需要在什么時候進行投遞。

  • 投遞時間 = 消息存儲時間(StoreTimestamp) + 延遲級別對應的時間。

圖片圖片

延遲服務消費SCHEDULE_TOPIC_XXXX消息:

Broker內部有一個ScheduleMessageService類,其充當延遲服務。

  • 主要是消費SCHEDULE_TOPIC_XXXX中的消息,并投遞到目標Topic中。

ScheduleMessageService在啟動時,其會創建一個定時器Timer,并根據延遲級別的個數,啟動對應數量的TimerTask。

  • 每個TimerTask負責一個延遲級別的消費與投遞。

如果可以投放,則在投放到原本的目的Topic。

每隔100ms,從TopicSCHEDULE_TOPIC_XXXX判斷18個隊列里的第一個消息是否可以被投放。

需要注意

每個TimeTask在檢查消息是否到期時:

  • 首先檢查對應隊列中尚未投遞第一條消息。
  • 如果這條消息沒到期,那么之后的消息都不會檢查。
  • 如果到期了,則進行投遞,并檢查之后的消息是否到期。

圖片圖片

圖片圖片

將信息重新存儲到CommitLog中:

在將消息到期后,需要投遞到目標Topic。

由于在第一步已經記錄了原來的Topic和隊列信息,因此這里重新設置,再存儲到CommitLog即可。

將消息投遞到目標Topic中:

由于消息

的Topic名稱已經改為了目標Topic。

因此消息會直接投遞到目標Topic的ConsumeQueue中,之后消費者即消費到這條消息。

消費者消費目標Topic中的數據。

責任編輯:武曉燕 來源: 月伴飛魚
相關推薦

2022-07-13 08:16:49

RocketMQRPC日志

2023-06-26 13:08:52

GraphQL服務數據

2025-01-02 10:02:44

2024-02-05 13:52:30

?Thread對象強引用

2023-12-27 07:31:45

json產品場景

2024-09-06 07:29:05

2022-12-22 08:14:54

2024-07-11 11:17:00

消息隊列Java

2023-08-01 12:51:18

WebGPT機器學習模型

2024-01-02 12:05:26

Java并發編程

2024-01-19 08:25:38

死鎖Java通信

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2024-04-01 08:29:09

Git核心實例

2024-07-31 08:26:47

2024-02-01 15:03:14

RocketMQKosmos高可用

2025-01-14 08:32:55

JWT令牌.NET

2023-07-30 22:29:51

BDDMockitoAssert測試

2023-05-05 06:54:07

MySQL數據查詢
點贊
收藏

51CTO技術棧公眾號

国产一区亚洲二区三区| 黄色网页在线免费观看| 久久精品免费在线观看| 欧美乱做爰xxxⅹ久久久| 国产suv精品一区二区三区| 日本xxxxx18| 亚洲国产精品高清| 最新中文字幕在线| 日韩精品专区在线影院观看| 成人性生交大片免费看在线播放| 亚洲精品一区二区久| 91麻豆精品国产91久久久久推荐资源| 九九久久国产精品| 欧美色123| 欧美在线观看www| 色婷婷久久99综合精品jk白丝| 在线视频三区| 色噜噜国产精品视频一区二区| 天天做夜夜做人人爱精品| 国产欧美日韩丝袜精品一区| 亚洲丝袜自拍清纯另类| 青青草国产精品一区二区| 国产成人免费9x9x人网站视频| 亚洲国产另类久久精品| 不卡一二三区| 色综合色综合久久综合频道88| 超碰成人免费| 国产一区深夜福利| 一区二区三区四区五区精品视频 | 青青在线视频一区二区三区| 久久资源综合| 国产精品欧美风情| 91精品啪在线观看国产18| 黄色国产精品一区二区三区| 另类综合日韩欧美亚洲| 亚洲中文字幕无码中文字| 亚洲欧美日韩国产一区二区三区| 中文在线网在线中文| 欧美一区二区三区在线观看| 在线视频超级| 性欧美xxxx视频在线观看| 99精品一区| 亚洲国产精品123| 久久久噜噜噜久久人人看| 2222www色视频在线观看| 欧美一级高清大全免费观看| 全球最大av网站久久| 国产精品一区二区女厕厕| 久久综合图片| 88av.com| 538在线一区二区精品国产| 成人国产网站| 亚洲r级在线观看| 国产一区二区福利| 天堂中文字幕| 欧美精品一区二区蜜臀亚洲| 激情小说一区| 亚洲a∨一区二区三区| 欧美激情资源网| 免费a级人成a大片在线观看| 久久九九国产精品怡红院| 婷婷亚洲图片| 免费在线观看视频a| 色综合久久综合| 草民电影神马电影一区二区| 国产精品偷伦视频免费观看国产| 精久久久久久久久久久| 濑亚美莉一二区在线视频| 国产视频精品久久久| 欧美老女人另类| 欧美狂野激情性xxxx在线观| 欧洲亚洲国产日韩| 超碰成人福利| 日本中文字幕一级片| 欧美亚洲图片小说| 色愁久久久久久| 99热久久这里只有精品| 91.成人天堂一区| 亚洲精品无吗| 日韩xxxx视频| 91精品国产日韩91久久久久久| 欧美综合自拍| 每日在线观看av| 欧美一区二区大片| 欧美国产一级| 亚洲视频第二页| 这里只有精品视频| 天堂在线亚洲视频| 国产高清免费av在线| 秋霞成人午夜鲁丝一区二区三区 | 日本亚洲欧洲色| 国产成人精品免费在线| 91se在线| 国产欧美久久久久久| 日本一区二区三区高清不卡| 色偷偷偷在线视频播放| 狠狠色狠狠色综合人人| 一区二区欧美国产| 99re8这里有精品热视频免费| 裸体大乳女做爰69| 日韩免费在线观看| 伊人久久久大香线蕉综合直播| 草莓污污视频在线观看| 午夜伦理精品一区| 国产视频不卡一区| 久久久久伊人| eeuss中文| 日韩精品中午字幕| 亚洲国产国产亚洲一二三| 免费在线观看麻豆视频 | 欧美一区二区视频在线| 日韩欧美国产激情| 欧美大黑bbbbbbbbb在线| 国产日本韩国在线播放| 久久青草福利网站| 亚洲国产精品av| 激情五月综合婷婷| 97在线免费公开视频| 日韩一级裸体免费视频| 成人综合婷婷国产精品久久蜜臀 | 亚洲欧美国产一区二区| 欧美久久久久久蜜桃| 欧美午夜在线视频| 免费人成在线观看网站| 成人av.网址在线网站| 亚洲成人手机在线| 不卡一区2区| 在线播放色视频| 国产精品国产福利国产秒拍| 亚洲卡通欧美制服中文| 精品久久久久中文字幕小说| 黄色福利视频网站| 国产精品黄色av| 福利视频第一区| 综合久久久久| 精品久久久久久亚洲精品| 一级毛片免费看| 日本阿v视频在线观看| 97在线电影| 国产亚洲成aⅴ人片在线观看| 国产乱色在线观看| 欧美hd在线| 国产精品一品二品| 黄页网站在线观看免费| 成人福利在线观看| 日本道在线观看一区二区| 久久精品国产www456c0m| 亚洲精品666| 亚洲伊人一本大道中文字幕| 午夜精品久久久久久| 欧美xxxxx视频| 欧美jizz18性欧美| 熟女视频一区二区三区| 久久伊人精品视频| 亚洲激情综合网| 国产一区日韩一区| 黄色在线看片| 亚洲精品高清无码视频| 国产精品美女网站| 69久久99精品久久久久婷婷| 国产乱码一区二区三区| h视频久久久| 黄色免费在线播放| 黄色网址在线免费看| 久久免费高清视频| 在线观看日韩电影| 国产成人精品亚洲午夜麻豆| 高清久久精品| 日韩毛片在线一区二区毛片| 亚洲v国产v在线观看| 欧美精品videosex性欧美| 91久久精品一区二区| 国产一区二区在线看| 亚州av日韩av| 成人福利网站| 亚洲人辣妹窥探嘘嘘| 国产欧美一区二区三区另类精品 | 一区二区三区在线播放欧美| 国产亚洲精品aa| 欧美 日韩 国产 一区| 欧美极品免费| 一区二区三区高清在线视频| 国产又粗又长又爽视频| 国产一区二区色| 亚洲天堂开心观看| 婷婷色综合网| 久久国产主播| 久久精品福利| 青青草综合网| 一区二区三区视频在线观看| 欧美在线观看你懂的| 精品亚洲一区二区三区在线观看 | 91精品欧美综合在线观看最新 | 91在线观看污| 不卡在线一区| 亚洲黄色中文字幕| 亚洲精品视频在线免费| 青青草精品视频在线| 国产美女在线精品免费观看| 性亚洲最疯狂xxxx高清|