当前位置: 首页 > news >正文

rocketmq 5.13任意时间延迟消息

原理是采用timewhile 实现的,源码分析可以参考
https://blog.csdn.net/sinat_14840559/article/details/129266105

除了useDelayLevel 已经默认改为false

private boolean useDelayLevel = false;

官方示意代码在public class TimerMessageProducer

for (int i = 0; i < totalMessagesToSend; i++) {Message message = new Message(TOPIC, ("Hello scheduled message " + i).getBytes(StandardCharsets.UTF_8));// This message will be delivered to consumer 10 seconds later.//message.setDelayTimeSec(10);// The effect is the same as the above// message.setDelayTimeMs(10_000L);// Set the specific delivery time, and the effect is the same as the abovemessage.setDeliverTimeMs(System.currentTimeMillis() + 10_000L);// Send the messageSendResult result = producer.send(message);System.out.printf(result + "\n");}

实际测试大部分都会提前几百毫秒发送消息。

ps:
message.getBornTimestamp() – 消息生成时间
message.getDeliverTimeMs()-- 消息触发时间,即delay设置的timestamp

可以使用以下代码验证

consumer.registerMessageListener((MessageListenerConcurrently) (messages, context) -> {for (MessageExt message : messages) {// Print approximate delay time periodString body = new String(message.getBody());System.out.printf("Receive message[msgId=%s %d ,%d  ms later ]\n", body,System.currentTimeMillis() - message.getBornTimestamp(),System.currentTimeMillis() - message.getDeliverTimeMs() );}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;});

proxy 配置如下:

{"rocketMQClusterName": "DefaultCluster","useDelayLevel":"false"
}
http://www.lryc.cn/news/100703.html

相关文章:

  • 小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题
  • 区块链服务网络的顶层设计与应用实践
  • tomcat日志输出乱码
  • Form1单例模式与互斥锁
  • MySQL | 常用命令示例
  • 常见网关对比
  • 机器学习动量优化算法笔记
  • asp.net与asp.net优缺点及示例
  • php 年月日 分组分页
  • flutter开发实战-请求dio设置Cookie
  • C语言第十一课--------操作符的使用与分类-------基本操作
  • 2,继承、内联函数、虚继承、友元、构造析构函数、初始化列表
  • Mkdocs中利用Js实现大小圈鼠标拖动样式
  • pytorch(6)——神经网络基本骨架nn.module的使用
  • 论文精读之BERT
  • 实战:Docker+Jenkins+Gitee构建CICD流水线
  • 7.25 Qt
  • P1420 最长连号
  • UVA-1354 天平难题 题解答案代码 算法竞赛入门经典第二版
  • 电机故障诊断(python程序,模型为CNN结合LSTM)
  • ubuntu 20.04 rtc时间显示问题探究
  • 数值分析第七章节 用Python实现非线性方程与方程组的数值解法
  • 利用MATLAB制作DEM山体阴影
  • ubuntu 使用 rsync 的 SSH 方式同步备份远程WEB服务器
  • 机器学习 | Python实现NARX模型预测控制
  • M5ATOMS3基础03给ROS1发一个问候(rosserial)
  • 基于Vue3实现鼠标按下某个元素进行移动,实时改变左侧或右侧元素的宽度,以及点击收起或展开的功能
  • 使用MyBatis(2)
  • 【FPGA/D6】
  • 【WebGIS实例】(10)Cesium开场效果(场景、相机旋转,自定义图片底图)