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

RocketMQ延迟消息机制

架构设计

延迟级别(Delay Level) 

RocketMQ 通过预定义的延迟级别来实现延迟消息。每个延迟级别对应一个固定的延迟时间。

 

消息存储和处理

  • 当消息到达 broker 后,如果设置了延迟级别,broker 将不会立即将消息投递到消费队列中,而是将其存储在特定的延迟队列中。
  • RocketMQ 的 broker 定时任务会检查延迟队列中消息的时间,当消息到达指定的延迟时间后,broker 会将消息存入实际的消费队列中以供消费者消费。

示例代码

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;

public class DelayedMessageProducer {
    public static void main(String[] args) throws Exception {
        // 创建生产者实例
        DefaultMQProducer producer = new DefaultMQProducer("example_producer_group");
        producer.setNamesrvAddr("localhost:9876");
        
        // 启动生产者
        producer.start();

        // 创建消息,并指定主题
        Message msg = new Message("TopicTest", "TagA", "OrderID001", "Hello RocketMQ".getBytes());

        // 设置延迟级别
        msg.setDelayTimeLevel(3); // 表示延迟 10 秒 (根据 delay level 3)

        // 发送消息
        producer.send(msg);

        // 关闭生产者
        producer.shutdown();
    }
}


http://www.kler.cn/a/385208.html

相关文章:

  • 2024阿里云CTF Web writeup
  • 06 Oracle性能优化秘籍:AWR、ASH、SQL trace与实时监控的实战指南
  • unity实习生面试
  • Rust移动开发:Rust在iOS端集成使用介绍
  • PPO(Proximal Policy Optimization)算法介绍
  • [ DOS 命令基础 2 ] DOS 命令详解-网络相关命令
  • 【架构论文-2】架构设计中存在的问题和改进方向
  • Linux/Unix echo命令
  • SAP ABAP开发学习——登录语言问题
  • springboot中使用jdbc查询数据库列表时,会出现数据库null值转换过程,很容易出现的错误
  • Oracle 第30章:最佳实践与案例研究
  • JVM 由多个模块组成,每个模块负责特定的功能
  • 详解Rust标准库:BTreeMap
  • go 集成gorm 数据库操作
  • npm install慢
  • ORACLE 删除archivelog日志
  • 最佳实践:如何实现函数参数之间的TS类型相依赖和自动推断
  • 基于微信小程序的电子购物系统的设计与实现(lw+演示+源码+运行)
  • Vue动态计算Table表格的高度
  • Spring Security(5.x, 6.x ) RBAC访问控制
  • 深入解析 WinForms MVVM 模式中的事件驱动与数据驱动
  • maven打jar包知识-运行包、依赖包、传递性
  • 解析json导出csv或者直接入库
  • 音频内容理解
  • 爱奇艺大数据多AZ统一调度架构:打破数据孤岛,提升效率
  • 【系统架构设计师】高分论文:论软件的可用性设计