RocketMQ并发消息消费重试DEMO

news/2024/5/2 9:32:32

无序消息的重试只针对集群消费模式生效;广播消费模式不提供失败重试特性

Producer

发了100个对象消息

public class AddProducer {public static void main(String[] args) throws Exception {DefaultMQProducer producer = new DefaultMQProducer("a-group");producer.setNamesrvAddr("192.168.0.211:9876");producer.start();ArrayList<Alarm> list = new ArrayList<>();for (int i = 1; i < 101; i++) {Alarm bean = new Alarm(i, "add_"+i, new SimpleDateFormat("yyyy-MM-dd").parse("2024-01-01"));list.add(bean);}try {for (Alarm alarm : list) {Message msg = new Message("ALARM_RECORD", "add",String.valueOf(alarm.getId()), JSONUtil.toJsonStr(alarm).getBytes(RemotingHelper.DEFAULT_CHARSET));producer.send(msg,new CustomSendCallback());System.out.println(alarm.getId() + " Continue execution ");}} catch (Exception e) {e.printStackTrace();}// 6. 关闭生产者
//        producer.shutdown();}
}

Consumer

public class ConsumerAdd {public static void main(String[] args) throws Exception {// 实例化消费者DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("record_add_group");consumer.setNamesrvAddr("192.168.0.211:9876");consumer.subscribe("ALARM_RECORD", "add");consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);// 默认允许每条消息最多重试16次consumer.setMaxReconsumeTimes(7);// 注册消息监听器consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {try {for (MessageExt msg : msgs) {String body = new String(msg.getBody());Alarm bean = JSONUtil.toBean(body, Alarm.class);if(bean.getId() == 77){throw new Exception();}System.out.println("正常消费 bean = " + bean);}return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;} catch (Exception e) {System.out.println("重试 "+msgs.get(0).getReconsumeTimes() +" "+ new String(msgs.get(0).getBody()));return ConsumeConcurrentlyStatus.RECONSUME_LATER;}});// 启动消费者consumer.start();System.out.printf("Consumer Tag add_1 Started.%n");}
}

多开测试

失败后进入重试队列

16次的时间间隔

10s、30s、1min、2min、3min、4min、5min、6min、7min、8min、9min、10min、20min、30min、1h、2h

最后一次失败直接进入死信队列、人工处理


http://www.mrgr.cn/p/68634880

相关文章

春秋云境:CVE-2022-32991[漏洞复现]

从CVE官网查询该漏洞相关信息 该漏洞是由于welcome.php中的eid参数包含了SQL注入漏洞 则我们的目标就在于寻找welcome.php地址以及相关的可注入eid参数 开启靶机 先在页面正常注册、登录一个账号。密码随便填 进入了home目录&#xff0c;这里有三个话题可以选择开启 随便选…

模拟电路学习笔记——晶体管电流放大作用

基本共射放大电路△u1为输入电压信号,接入基极——发射极回路,称为输入回路;放大后的信号在集电极——发射极回路,称为输出回路;因发射极是两个回路的公共端,故称该电路为共射放大电路晶体管工作在放大状态的外部条件:发射结正向偏置,集电结反向偏置输入回路中基极电源…

MATLAB偏最小二乘回归(PLSR)和主成分回归(PCR)分析光谱数据

全文链接:http://tecdat.cn/?p=2655 最近我们被客户要求撰写关于偏最小二乘回归(PLSR)和主成分回归(PCR)的研究报告,包括一些图形和统计输出。 此示例显示如何在matlab中应用偏最小二乘回归(PLSR)和主成分回归(PCR),并讨论这两种方法的有效性 当存在大量预测变量时…

UE5 C++ 射线检测

一.声明四个变量 FVector StartLocation;FVector ForwardVector;FVector EndLocation;FHitResult HitResult;二.起点从摄像机&#xff0c;重点为摄像机前9999m。射线检测 使用LineTraceSingleByChannel 射线直线通道检测&#xff0c;所以 void AMyCharacter::Tick(float Delt…

matlab使用经验模式分解emd 对信号进行去噪

原文链接 : http://tecdat.cn/?p=2567 原文出处:拓端数据部落公众号对于这个例子,考虑由具有明显频率变化的正弦波组成的非平稳连续信号。手提钻的振动或烟花声是非平稳连续信号的例子。 以采样频率加载非平稳信号数据fs,并可视化混合正弦信号。 htmlload(sinusoidalSigna…

Spring Boot 学习(3)——Spring Initializr 创建项目问题解决

产生问题的原因&#xff0c;各种的版本都较老&#xff0c;所以导致出现问题。目前暂未打到合适的教程&#xff0c;按老教程学起来先。 小白瞎学&#xff0c;大神勿喷&#xff01; 再次强调环境&#xff1a;maven 3.3.9、jdk 1.8、idea 2017、Spring 4.3.13、Spring Boot 1.5.…

Linux学习之路 -- PCB介绍 -- 进程优先级

1、什么是优先级&#xff1f; 进程需要某一种资源&#xff0c;而系统要通过特定的方式来决定谁先获得这些资源&#xff0c;而系统的做法就是给不同的进程安排不同的优先级。让优先级高的进程先享有一些资源。 2、为什么要有优先级 因为资源的缺乏&#xff0c;所以系统的才会…

linux进程与计划(2)

五大性能性能 命令内存使用率 free,topCPU使用率 top,ps,w硬盘使用率 df硬盘读写性能 dd,iostat网络带宽 iftopps -ef 命令输出信息 如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令就足够了 CPU 在运算数据时,不是把一个集成…

软件产品许可证书 Licence 全流程研发(使用非对称加密技术,既安全又简单)

本篇博客对应的代码地址&#xff1a; Gitee 仓库地址&#xff1a;https://gitee.com/biandanLoveyou/licence 1、背景介绍 公司是做软件 SAAS 服务的&#xff0c;一般来说软件部署有以下几种常见的模式&#xff1a; 1、自己研发和部署到自己的云服务器&#xff0c;然后有偿提供…

ts中的dom元素和event事件类型声明

1, HTMLElement 和 Element<div id="divClick"></div>const docu = document.getElementById(divClick);const docu1 = document.querySelector(#divClick);把鼠标分别放在docu和docu1上:HTMLElement HTMLElement 是 HTML 文档中某个元素的具体类型,该…

debian安装和基本使用

debian安装和基本使用 文章目录 debian安装和基本使用1. 为什么选择debian2. 如何下载Debian2.1 小型安装镜像2.2 完整安装镜像 3. Debian操作系统安装3.1 创建Debian虚拟机3.2 安装操作系统 4. Debian系统的初始设置4.1 桌面环境的配置4.2 配置网络4.3 生效网络配置4.4 配置de…

大模型日报|今日必读的6篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Google DeepMind 新研究&#xff1a;多样本上下文学习 目前&#xff0c;大型语言模型&#xff08;LLMs&#xff09;最擅长的是 “少样本上下文学习”&#xff08;ICL&#xff09;—— 即在推理时从上下文中提供的少…

反转二叉树(力扣226)

解题思路&#xff1a;用队列进行前序遍历的同时把节点的左节点和右节点交换 具体代码如下&#xff1a; class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root NULL) return root;swap(root->left, root->right); // 中invertTree(root->left)…

C# Lock锁对象的理解

我们lock的一般是对象,不是值类型和字符串。1、为什么不能lock值类型比如lock(1)呢?lock本质上Monitor.Enter,Monitor.Enter会使值类型装箱,每次lock的是装箱后的对象。lock 其实是类似编译器的语法糖,因此编译器直接限制住不能lock值类型。退一万步说,就算能编译器允许你…

GPT国内怎么用?4月最新版本来了

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

腾讯云APP备案指南:一站式完成备案手续,助您顺利上线

工信部最新通知要求所有互联网信息服务提供者完成移动互联网应用程序备案手续。腾讯云为开发者提供了简单易行的备案流程,本文详细解答如何在腾讯云平台完成备案,帮助开发者快速上线自己的APP。从验证备案域名到腾讯云审核,一步步指导您完成备案流程,让您的APP合法合规地运…

windows系统添加自启动服务

windows 添加程序自动启动:shell:startup将需要启动的应用的启动入口,创建一个快捷键,然后将其放入该文件夹中

VKL144C/D LQFP48/SSOP48仪器仪表超低功耗/超省电LCD液晶段码驱动IC: 分贝仪、测光仪、测厚仪可驱动36SEGx4COM

VKL144C/D概述: VKL144C/D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的 LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通 过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表 类产…