1. 程式人生 > >RocketMQ延時訊息的使用和延時級別的配置

RocketMQ延時訊息的使用和延時級別的配置

RocketMQ 支援定時訊息,但是不支援任意時間精度,僅支援特定的 level,例如定時 5s, 10s, 1m 等。

其中,level=0 級表示不延時,level=1 表示 1 級延時,level=2 表示 2 級延時,以此類推。

如果要支援任意的時間精度,在Broker層面,必須要做訊息排序,如果再涉及到持久化,那麼訊息排序要不可避免的產生巨大效能開銷。

如何配置

在伺服器端(rocketmq-broker端)的屬性配置檔案中加入以下行:

messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 
描述了各級別與延時時間的對應對映關係。

1. 這個配置項配置了從1級開始,各級延時的時間,可以修改這個指定級別的延時時間; 
2. 時間單位支援:s、m、h、d,分別表示秒、分、時、天; 
3. 預設值就是上面宣告的,可手工調整; 
4. 預設值已夠用,不建議修改這個值。

如何傳送延時訊息

傳送延時訊息只需要在客戶端(rocketmq-client端)待發送的訊息( com.alibaba.rocketmq.common.message.Message )中設定延時級別即可。

“設定訊息延時 10s 消費”的 Producer 端程式碼如下:

Message msg = new Message(topic, tags, keys, body);
msg.setDelayTimeLevel(3
); ... SendResult sendResult = getMQProducer().send(msg); ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

其中 Message 是 com.alibaba.rocketmq.common.message.Message 。

相關推薦

編譯型別執行型別---關於型別轉換的原理解析

轉:https://www.cnblogs.com/aademeng/articles/6190143.html 先上程式碼: Class A: package testone; public class A { String a = "This is Cl

java編譯異常執行異常

一 什麼是編譯時異常,什麼是執行時異常 執行時異常可以通過改變程式避免這種情況發生,比如,除數為0異常,可以先判斷除數是否是0,如果是0,則結束此程式。從繼承上來看,只要是繼承RunTimeException類的,都是執行時異常,其它為編譯時異常。 二編譯時異常和執

Java基礎 | 編譯型別執行型別

一、前言 最近在做筆試題的時候,才看到有這麼一個知識點,查了好幾篇部落格,在這裡記錄一下 二、是什麼 Java引用變數有兩個型別,一個是編譯時型別,還有一個是執行時型別。 編譯時型別是由宣告該變數時使用的型別所決定,執行時型別是由該變數指向的物件型別決定 如果

JAVA的編譯錯誤執行錯誤

1. 要區分編譯時錯誤和執行時錯誤,就應該先明白什麼是編譯?什麼是執行? 首先,先看一下這張圖: 編譯期就是將我們寫的java原始碼交給編譯器執行的過程,起翻譯的作用,該過程主要對java原始碼的語法進行檢查,如果沒有語法錯誤,就將原始碼編譯成位元組

編譯異常執行異常的區別

最簡單的說法: javac出來的異常就是編譯時異常,就是說把原始碼編譯成位元組碼(class)檔案時報的異常,一般如果用Eclispe,你敲完程式碼儲存的時候就是編譯的時候。java出來的異常就是執行時異常 Java異常可分為3種:   (1)編譯時異常:Java.

異常(編譯異常執行異常)

 1. 引子        try…catch…finally恐怕是大家再熟悉不過的語句了,而且感覺用起來也是很簡單,邏輯上似乎也是很容易理解。不過,我親自體驗的“教訓”告訴我,這個東西可不是想象中的那麼簡單、聽話。不信?那你看看下面的程式碼,“猜猜”它

異常:編譯異常執行異常&throwthrows區別try-catch的應用

1、編譯時被檢測異常:只要是Exception和其子類都是,除了特殊子類:RuntimeException體系;這種問題一旦出現,希望在編譯時就進行檢測,讓這種問題有對應的處理方式。 2、編譯時不檢測的異常(執行時異常):就是Exception中的Runtim

RocketMQ訊息的使用級別配置

RocketMQ 支援定時訊息,但是不支援任意時間精度,僅支援特定的 level,例如定時 5s, 10s, 1m 等。 其中,level=0 級表示不延時,level=1 表示 1 級延時,level=2 表示 2 級延時,以此類推。 如果要支援任意的時間精度,在Broker層面,必須要做訊息排序,

RocketMQ原理學習--訊息實現原理

         RocketMQ提供了延時訊息型別,簡單來說就是生產者在傳送訊息的時候指定一個延時時間,當到達延時時間之後訊息才能夠被投送到消費者。       首先我們可以考慮一下RocketMQ的延時訊息是

RocketMQ訊息

一個延時訊息被髮出到消費成功經歷以下幾個過程:設定訊息的延時級別delayLevelproducer傳送訊息broker收到訊息在準備將訊息寫入儲存的時候,判斷是延時訊息則更改Message的topic為延時訊息佇列的topic,也就是將訊息投遞到延時訊息佇列有定時任務從延時

RocketMQ 級別配置

RocketMQ 支援定時訊息,但是不支援任意時間精度,僅支援特定的 level,例如定時 5s, 10s, 1m 等。其中,level=0 級表示不延時,level=1 表示 1 級延時,level=2 表示 2 級延時,以此類推。 如何配置: 在伺服器端(rock

RocketMQ學習(七)——RocketMQ訊息

使用者傳送的訊息也可以指定延時時間(更準確的說是延時等級),然後在指定延時時間之後投遞訊息,然後被consumer消費。阿里雲的ons還支援定時訊息,而且延時訊息是直接指定延時時間,其實阿里雲的延時訊息也是定時訊息的另一種表述方式,都是通過設定訊息被投遞的時間

Spring boot實戰專案整合阿里雲RocketMQ (非開源版)訊息佇列實現傳送普通訊息訊息 --附程式碼

一.為什麼選擇RocketMQ訊息佇列? 首先RocketMQ是阿里巴巴自研出來的,也已開源。其效能和穩定性從雙11就能看出來,借用阿里的一句官方介紹:歷年雙 11 購物狂歡節零點千萬級 TPS、萬億級資料洪峰,創造了全球最大的業務訊息併發以及流轉紀錄(日誌類訊息除外);  在始終保證高效能前提下

Linux 系統任務定時任務

linux基礎運維學習一、延時任務 在Linux中延時任務是臨時的,可以指定某一個任務在將來的特定時間運行1、at命令 基本操作格式:[[email protected]/* */ ~]# at now+1min at> date<EOT> #EOT代表Ctrl+D來保存

任務定時任務

延時及定時任務1延遲任務at命令發起的任務都是一次性的at +time>命令>ctrl+d 表示發起動作 at -l | atq

Linux中的定時任務

linux如何讓系統定時的完成任務,如何讓系統再過一段時間自主的完成某項任務,如下將對系統定時和延時做詳細介紹。####一、at命令####at命令基本用法at -l ##列出延遲任務at -r 任務id ##刪除此id任務at -m ##讓無輸出的命令不產生

Android Camera2 拍照(三)——切換攝像頭,拍攝閃光模式

openca any The visible surface else 提示 再次 .cn 原文:Android Camera2 拍照(三)——切換攝像頭,延時拍攝和閃光模式

Linux(RadHat)基礎學習—任務定時任務

str 命令 一次 vim oot 每天 指令2 conf 回車 1.系統延時任務 1.at命令 at命令發起的延時任務都時一次性的 at + time[回車]指令1[回車]指令2[回車]...[回車]按ctrl+d發起動作 例子1: [root@xyz ~]# at 11

Win10-VS2017平臺下C語言定時器使用

#include "pch.h" #define _CRT_SECURE_NO_WARNINGS  #include <iostream> #include <stdio.h> #include <windows.h> #include <s

網路——傳送傳播

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!