资料介绍
软件简介
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 20次下载
- 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机制
- 带你了解什么是高性能计算(HPC) 277次阅读
- 裸机中环形队列与RTOS中消息队列有何区别呢? 554次阅读
- 消息队列的发展历史 844次阅读
- ZWave中的消息队列机制是什么 656次阅读
- Free RTOS的信息队列 654次阅读
- 如何使用消息队列进行通信 1304次阅读
- 如何使用消息队列进行通信 1193次阅读
- 浅析OSAT的高性能封装威廉希尔官方网站 4897次阅读
- 什么是消息队列?消息队列中间件重要吗? 1263次阅读
- SystemVerilog中的队列 3681次阅读
- 实现一个双端队列的步骤简析 1312次阅读
- 什么是优先队列?漫画形式带你详细了解优先队列 7975次阅读
- 消息总线和消息队列的区别是什么? 1.6w次阅读
- FIFO队列原理简述 拥塞避免原理 9992次阅读
- Java常用消息队列原理介绍及性能对比 8385次阅读
下载排行
本周
- 1ADI高性能电源管理解决方案
- 2.43 MB | 446次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 134次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 120次下载 | 免费
- 4如何正确测试电源的纹波
- 0.36 MB | 5次下载 | 免费
- 5550W充电机原理图
- 0.13 MB | 2次下载 | 6 积分
- 6USB的PD快充协议电压诱骗控制器FS312A中文手册
- 1.51 MB | 2次下载 | 免费
- 7USB的PD和OC快充协议电压诱骗控制器FS312B中文手册
- 1.35 MB | 2次下载 | 免费
- 8ADI公司串行端口开发和故障排除指南
- 343.09KB | 1次下载 | 免费
本月
- 1ADI高性能电源管理解决方案
- 2.43 MB | 446次下载 | 免费
- 2免费开源CC3D飞控资料(电路图&PCB源文件、BOM、
- 5.67 MB | 134次下载 | 1 积分
- 3基于STM32单片机智能手环心率计步器体温显示设计
- 0.10 MB | 120次下载 | 免费
- 4使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 53314A函数发生器维修手册
- 16.30 MB | 31次下载 | 免费
- 6美的电磁炉维修手册大全
- 1.56 MB | 22次下载 | 5 积分
- 7感应笔电路图
- 0.06 MB | 10次下载 | 免费
- 8使用TL431设计电源
- 0.67 MB | 8次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420062次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多