消息队列-RockMQ-定时延时发送消息

news2025/1/19 3:40:43

定时延时发送消息

任务需要延迟一段时间再进行处理。
生产者

public class Producer {
    public static void main(String[] args) throws Exception {
        DefaultMQProducer producer = new DefaultMQProducer("producer_group");
        producer.setNamesrvAddr("ip:9876");
        producer.start();
        List<Order> F = OrderBuilder.build(1, "A", "B", "C");
        List<Order> S = OrderBuilder.build(2, "D", "Q");
        List<Order> T = OrderBuilder.build(3, "N", "Q", "R");
        ArrayList<Order> orders = new ArrayList<Order>() {{
            addAll(F);
            addAll(S);
            addAll(T);
        }};
        for (Order order : orders) {
            Message msg = new Message("test-topic", "test-topic_str", order.toString().getBytes());
            msg.setKeys("test-topic_trace");
            // 官网提供了这些延迟级别 分别对应 0 1 2
            // messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";
            // 重要的逻辑在这里设置队列延迟等级
            msg.setDelayTimeLevel(3);
            producer.send(msg);
        }
        System.out.println("finish");
        // 这里发送了两个Tag 的消息
        // 下面这个消息没有设置延迟时间
        for (Order order : orders) {
            Message msg = new Message("test-topic", "test-topic_str_other", ("other" + order.toString()).getBytes());
            msg.setKeys("test-topic_trace_other");
            
            producer.send(msg);
        }
        System.out.println("finish");
    }
}

消费者1订阅tag 为*的消息

public class Consumer {
    public static void main(String[] args) throws Exception {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test-group");
        consumer.setNamesrvAddr("ip:9876");
        // *表示订阅所有的消息
        consumer.subscribe("test-topic", "*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                for (MessageExt msg : msgs) {
                    System.out.println(String.format("msg {%s} recvTime %s", new String(msg.getBody()), new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
    }
}

可以看到我们没有设置延迟发送和延迟发送的sentTime和recvTime是很有区别的:
在这里插入图片描述

我们看到test-group里面的消息总共有16条
在这里插入图片描述
消费者订阅tag为test-topic_str_other的消息

consumer.subscribe("test-topic", "test-topic_str_other");

在这里插入图片描述
消费者订阅tag为test-topic_str的消息

consumer.subscribe("test-topic", "test-topic_str");

在这里插入图片描述
通过上面的案例验证了:

// 后面这个值是根据消息的tag进行正则匹配的
consumer.subscribe("test-topic", "*");

源码的注解也有说明:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1370383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【从零开始学技术】Fiddler 抓取 https 请求大全

1.Fiddler代理浏览器设置 注意浏览器代理区别 Chrome/IE浏览器使用的都是系统代理设置 在chrome浏览器的设置中搜索代理&#xff0c;可以看到 打开IE浏览器&#xff0c;选择设置->Internet选项 Firefox浏览器使用的是单独的一套代理系统 在Firefox的代理设置中&#xff0c;我…

hadoop自动获取时间

1、自动获取前15分钟 substr(from_unixtime(unix_timestamp(concat(substr(20240107100000,1,4),-,substr(20240107100000,5,2),-,substr(20240107100000,7,2), ,substr(20240107100000,9,2),:,substr(20240107100000,11,2),:,00))-15*60,yyyyMMddHHmmss),1) unix_timestam…

sentinel熔断简单实现

sentinel详细介绍网址 基于qps限流 package mainimport ("fmt"sentinel "github.com/alibaba/sentinel-golang/api""github.com/alibaba/sentinel-golang/core/base""github.com/alibaba/sentinel-golang/core/flow""log"…

CMake入门教程【核心篇】设置和使用缓存变量

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 概述设置缓存变量使用缓存变量更改缓存变量完整代码示例实战使用技巧注意事项总结与分析

STM32-04-STM32时钟树

STM32时钟树 什么是时钟&#xff1f; 时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。&#xff08;时钟是单片机的脉搏&#xff0c;搞懂时钟走向及关系&#xff0c;对单片机使用至关重要&#xff09;。 时钟树 时钟源 2个外部时钟源 高速外部振荡器(HSE…

Lava多模态大模型调试(基于vscode框架)

文章目录 前言一、整体概括二、launch.json文件配置三、调试展示前言 之前博客这里介绍LLava1.5多模态大模型的安装、训练、预测等。但对于你想查看源码或多或少都有些麻烦,也不利于代码调试。基于此,本文是一篇基于vscode框架调试llava大模型的教程。 一、整体概括 我是在…

再谈前端算法

楔子 – 青蛙跳台阶什么是算法算法实例 &#xff1a; 实现一个LRU缓存 实现 LRUCache扩展&#xff1a; ES6 Map Map的创建和初始化&#xff1a;添加键值对&#xff1a;获取键值对&#xff1a;检查Map中是否存在某个键&#xff1a;删除键值对&#xff1a;遍历Map&#xff1a;获取…

MulticoreWare与Imagination一同按下汽车计算工作负载的“加速键”

中国北京 – 2024年1月8日 - MulticoreWare Inc与Imagination Technologies共同宣布已在德州仪器TDA4VM处理器上实现了GPU计算&#xff0c;不仅使算力提升了约50 GFLOPS&#xff0c;而且还实现了自动驾驶和高级驾驶辅助系统&#xff08;ADAS&#xff09;常见工作负载性能的跃升…

环境变量的使用

1.用法 1.建立文件夹.env.production&#xff08;开发&#xff09;.env.development(生产) 代码: NODE_ENVdevelopment VUE_APP_BASE_APIwww.aaa.comNODE_ENVproduction VUE_APP_BASE_APIwww.xxx.com 注意: 环境变量的文件夹应该是和src目录同级的: 2.获取 process.env.V…

php环境搭建

PHP环境搭建 1.软件下载及安装 php网址&#xff1a;php.net vscode网址&#xff1a;https://code.visualstudio.com/ 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1kx_Z-2dz3kGozDcynW7C_Q 提取码&#xff1a;1234 PHP&#xff1a; PHP安装 解压到指定…

无线与局域网技术期末划题自制答案

简答题 1.描述5G的三大应用场景&#xff1f; 5G的三大应用场景包括增强型移动宽带&#xff08;eMBB&#xff09;、超可靠低延迟通信&#xff08;URLLC&#xff09;和大规模机器类型通信&#xff08;mMTC&#xff09;。增强型移动宽带&#xff08;eMBB&#xff09;主要用于支持…

2024.1.9每日一题

LeetCode 2707.字符串中的额外字符 2707. 字符串中的额外字符 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始的字符串 s 和一个单词字典 dictionary 。你需要将 s 分割成若干个 互不重叠 的子字符串&#xff0c;每个子字符串都在 dictionary 中出…

MongoDB 设置账号密码_mongodb设置用户名和密码

MongoDB 设置账号密码_mongodb设置用户名和密码 1、安装 安装可以看我这篇文章:https://blog.csdn.net/u014641168/article/details/123937775 2、说明 由于默认安装的MongoDB是没有设置用户密码的,极其危险,所以需要设置一下用户密码 3、创建用户 用Navicat15连接Mon…

【Python学习】Python学习9-字符串

目录 【Python学习】Python学习9-字符串 前言创建语法访问字符串的值字符串拼接Python 转义字符Python字符串运算符Python格式化字符串Python 三引号Unicode字符串Python 的字符串内建函数参考 文章所属专区 Python学习 前言 本章节主要说明Python的字符串类型。 创建语法 …

Linux【C编程】 信号以及信号的处理方式

文章目录 1.什么是信号&#xff1f;1.1信号是内容受限的一种异步通信机制1.2信号由谁发出的&#xff1f;1.3信号由谁处理&#xff0c;如何处理 2.常见的信号3.进程对信号的处理3.1用signal函数处理SIGINT信号3.2使用sigaction 函数 4.alarm 和pause函数4.1 alarm函数详解4.2 pa…

1.4.1机器学习——梯度下降+α学习率大小判定

1.4.1梯度下降 4.1、梯度下降的概念 ※【总结一句话】&#xff1a;系统通过自动的调节参数w和b的值&#xff0c;得到最小的损失函数值J。 如下&#xff1a;是梯度下降的概念图。 我们有一个损失函数 J(w,b)&#xff0c;包含两个参数w和b&#xff08;你可以想象成J(w,b) w*x…

Windows环境下使用HTML5播放RTSP流

本文搭建环境选用Windows平台 一、使用笔记本摄像头推送RTSP视频流 参考文章:笔记本摄像头模拟监控推送RTSP流-CSDN博客 二、搭建Vue项目 参考项目&#xff1a; HTML5 播放 rtsp视频流 2.1 下载压缩包 2.2 解压文件&#xff0c;使用VSCode打开项目 2.3 启动项目 注&#…

vue day06

1、路由模块封装 2、声明式导航 实现导航高亮效果 直接通过这两个类名对相应标签设置样式 点击a链接进入my页面时&#xff0c;a链接 我的音乐高亮&#xff0c;同时my下的a、b页面中的 我的音乐也有router-link-active类&#xff0c;但没有精确匹配的类&#xff08;只有my页…

Talk | EMNLP 2023 最佳长论文:以标签为锚-从信息流动的视角分析上下文学习

本期为TechBeat人工智能社区第561期线上Talk。 北京时间1月4日(周四)20:00&#xff0c;北京大学博士生—王乐安的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “以标签为锚-从信息流动的视角分析上下文学习”&#xff0c;介绍了他的团队在上下文学…

Python 安卓开发:Kivy、BeeWare、Flet、Flutter

kivy&#xff1a;https://github.com/kivy python-for-android &#xff1a;https://python-for-android.readthedocs.io/en/latest/ BeeWare&#xff1a;https://docs.beeware.org/en/latest/ Flet&#xff1a;https://github.com/flet-dev/flet 把 PySide6 移植到安卓上去&a…