資料介紹
軟件簡介
RocketMQ 開源版本任意時間延時隊列實現
定時消息:Producer將消息發送到消息隊列RocketMQ版服務端,但并不期望立馬投遞這條消息,而是推遲到在當前時間點之后的某一個時間投遞到Consumer進行消費,該消息即定時消息。
延時消息:Producer將消息發送到消息隊列RocketMQ版服務端,但并不期望立馬投遞這條消息,而是延遲一定時間后才投遞到Consumer進行消費,該消息即延時消息。
定時消息與延時消息在代碼配置上存在一些差異,但是最終達到的效果相同:消息在發送到消息隊列RocketMQ版服務端后并不會立馬投遞,而是根據消息中的屬性延遲固定時間后才投遞給消費者。
適用場景
定時消息和延時消息適用于以下一些場景:
消息生產和消費有時間窗口要求,例如在電商交易中超時未支付關閉訂單的場景,在訂單創建時會發送一條延時消息。
這條消息將會在30分鐘以后投遞給消費者,消費者收到此消息后需要判斷對應的訂單是否已完成支付。
如支付未完成,則關閉訂單。如已完成支付則忽略。
通過消息觸發一些定時任務,例如在某一固定時間點向用戶發送提醒消息。
使用方式 定時消息和延時消息的使用在代碼編寫上存在略微的區別:
發送定時消息需要明確指定消息發送時間點之后的某一時間點作為消息投遞的時間點。
發送延時消息時需要設定一個延時時間長度,消息將從當前發送時間點開始延遲固定時間之后才開始投遞。
注意事項
定時消息的精度會有1s~2s的延遲誤差。
定時和延時消息的msg.setStartDeliverTime參數需要設置成當前時間戳之后的某個時刻(單位毫秒)。
如果被設置成當前時間戳之前的某個時刻,消息將立刻投遞給消費者。
定時和延時消息的msg.setStartDeliverTime參數可設置40天內的任何時刻(單位毫秒),超過40天消息發送將失敗。
StartDeliverTime是服務端開始向消費端投遞的時間。如果消費者當前有消息堆積,那么定時和延時消息會排在堆積消息后面,將不能嚴格按照配置的時間進行投遞。
由于客戶端和服務端可能存在時間差,消息的實際投遞時間與客戶端設置的投遞時間之間可能存在偏差。
如何使用
推薦使用阿里云提供的rocketmq版本的pom
<dependency> <groupId>com.aliyun.openservicesgroupId> <artifactId>ons-clientartifactId> <version>1.8.4.Finalversion> dependency>
消息發送
import com.aliyun.openservices.ons.api.*; import com.aliyun.openservices.shade.org.apache.commons.lang3.time.DateFormatUtils; import java.util.Date; import java.util.Properties; public class ProducerDelayTest { public static void main(String[] args) { Properties properties = new Properties(); // AccessKey ID阿里云身份驗證,在阿里云RAM控制臺創建。 properties.put(PropertyKeyConst.AccessKey, "XXX"); // AccessKey Secret阿里云身份驗證,在阿里云RAM控制臺創建。 properties.put(PropertyKeyConst.SecretKey, "XXX"); // 設置TCP接入域名,進入消息隊列RocketMQ版控制臺實例詳情頁面的接入點區域查看。 properties.put(PropertyKeyConst.NAMESRV_ADDR, "localhost:9876"); Producer producer = ONSFactory.createProducer(properties); // 在發送消息前,必須調用start方法來啟動Producer,只需調用一次即可。 producer.start(); { Message msg = new Message( // 您在消息隊列RocketMQ版控制臺創建的Topic。 "TopicTest", // Message Tag,可理解為Gmail中的標簽,對消息進行再歸類,方便Consumer指定過濾條件在消息隊列RocketMQ版服務器過濾。 "TagA", // Message Body可以是任何二進制形式的數據,消息隊列RocketMQ版不做任何干預,需要Producer與Consumer協商好一致的序列化和反序列化方式。 "演示15秒鐘>>> ".getBytes()); // 設置代表消息的業務關鍵屬性,請盡可能全局唯一。 // 以方便您在無法正常收到消息情況下,可通過控制臺查詢消息并補發。 // 注意:不設置也不會影響消息正常收發。 msg.setKey("ORDERID_100e"); try { // 延時消息,單位毫秒(ms),在指定延遲時間(當前時間之后)進行投遞,例如消息在15秒后投遞。 long delayTime = System.currentTimeMillis() + 15000; System.out.println("發送時間>>" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH
- 隊列實現數據循環外顯示源碼下載 4次下載
- 220MHz高性能差分振蕩器SiT9121 4次下載
- 高性能Type-C/DP1.4至HDMI2.0b轉換器CS5265AN 22次下載
- MX25L6445E高性能串行閃存規范文件 20次下載
- 高性能嵌入式堆棧Azure PTOS USBX概述 10次下載
- 高效高性能LED恒流驅動電源芯片AX2028 24次下載
- 高性能低成本的藍牙模塊CSR6576原理圖 16次下載
- 怎么樣實現車輛隊列行駛系統的總體設計論文 5次下載
- 單片機實現FIFO循環隊列的代碼和資料免費下載
- PIC32MX5XX/6XX/7XX系列高性能 32 位閃存單片機
- OV971高性能視頻汽車視覺應用簡介.pdf 1次下載
- 一種適用于任意余數基的高性能后向轉換結構_楊鵬 0次下載
- MIMO天線中的延時失衡性能分析 27次下載
- 基于雙接收緩沖隊列的CAN驅動模型設計
- 一種高效的磁盤隊列I/O機制
- FPGA延時Verilog HDL實現 353次閱讀
- Kafka高性能背后的技術原理 395次閱讀
- 裸機中環形隊列與RTOS中消息隊列有何區別呢? 736次閱讀
- 消息隊列的發展歷史 1183次閱讀
- Free RTOS的信息隊列 776次閱讀
- 如何使用消息隊列進行通信 1436次閱讀
- 如何使用消息隊列進行通信 1384次閱讀
- 淺析OSAT的高性能封裝技術 5437次閱讀
- 什么是消息隊列?消息隊列中間件重要嗎? 1446次閱讀
- SystemVerilog中的隊列 4125次閱讀
- 實現一個雙端隊列的步驟簡析 1465次閱讀
- 什么是優先隊列?漫畫形式帶你詳細了解優先隊列 8091次閱讀
- 消息總線和消息隊列的區別是什么? 1.6w次閱讀
- FIFO隊列原理簡述 擁塞避免原理 1w次閱讀
- Java常用消息隊列原理介紹及性能對比 8453次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網絡安全從業者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論