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

系列十三、Java操作RocketMQ之带Key的消息

一、概述

        RocketMQ中的消息,默认会有一个messageId当做消息的唯一标识,我们也可以给消息携带一个key,用作唯一标识或者业务标识,包括在控制面板(Dashboard,RocketMQ的一个可视化面板)中也可以使用messageId或者key来进行查询。

二、案例代码

2.1、pom

        同案例五

2.2、RocketMQConstant

        同案例五

2.3、KeyConsumer

package org.star.key.consumer;import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.star.constants.RocketMQConstant;import java.util.List;/*** @Author: 一叶浮萍归大海* @Date: 2023/9/8 10:15* @Description: 带有Key的消息消费者*/
@Slf4j
public class KeyConsumer {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("KeyConsumerGroup");consumer.setNamesrvAddr(RocketMQConstant.NAME_SERVER_ADDR);consumer.subscribe("KeyTopic","*");consumer.registerMessageListener(new MessageListenerConcurrently() {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {log.info("消费者[KeyConsumer]正在消费消息,当前线程:{},消息内容:{},标签:{},key:{}",Thread.currentThread().getName(), StrUtil.utf8Str(list.get(0).getBody()),list.get(0).getTags(),list.get(0).getKeys());return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});consumer.start();log.info("KeyConsumer start success");}}

2.4、KeyProducer

package org.star.key.producer;import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.star.constants.RocketMQConstant;import java.nio.charset.StandardCharsets;
import java.util.UUID;/*** @Author: 一叶浮萍归大海* @Date: 2023/9/8 10:06* @Description: 带有Key的消息生产者*/
@Slf4j
public class KeyProducer {public static void main(String[] args) throws Exception {DefaultMQProducer producer = new DefaultMQProducer("KeyProducerGroup");producer.setNamesrvAddr(RocketMQConstant.NAME_SERVER_ADDR);producer.start();log.info("KeyProducer start success!");String key = UUID.randomUUID().toString().replaceAll("-","");Message message = new Message("KeyTopic","KeyTag",key,"我是一个带有标记和key的消息".getBytes(StandardCharsets.UTF_8));SendResult sendResult = producer.send(message);log.info("发送结果:{},消息ID:{},队列ID:{}",sendResult.getSendStatus(),sendResult.getMsgId(),sendResult.getMessageQueue().getQueueId());producer.shutdown();}}

2.5、控制台打印

# 生产者端
10:23:01.171 [main] INFO org.star.key.producer.KeyProducer - KeyProducer start success!
10:23:01.657 [main] INFO org.star.key.producer.KeyProducer - 发送结果:SEND_OK,消息ID:0AA86761652418B4AAC22646EA120000,队列ID:2# 消费者端
10:23:33.015 [ConsumeMessageThread_1] INFO org.star.key.consumer.KeyConsumer - 消费者[KeyConsumer]正在消费消息,当前线程:ConsumeMessageThread_1,消息内容:我是一个带有标记和key的消息,标签:KeyTag,key:bbf5efa94d0e473987f5718f3c023c9c

相关文章:

系列十三、Java操作RocketMQ之带Key的消息

一、概述 RocketMQ中的消息&#xff0c;默认会有一个messageId当做消息的唯一标识&#xff0c;我们也可以给消息携带一个key&#xff0c;用作唯一标识或者业务标识&#xff0c;包括在控制面板&#xff08;Dashboard&#xff0c;RocketMQ的一个可视化面板&#xff09;中也可以使…...

C#调用Dapper

1-查询数据 string sql “查询语句”; using (SqlConnection con new SqlConnection(数据库连接信息)) { List<表结构实体类> list con.Query<表结构实体类>(sql).ToList(); } 2-执行sql string sql “UPDATE table1 SET column1 Name where id id”; using…...

2023高教杯数学建模1:ABC题目+初步想法

2023 ABC题目初步想法 写在最前面A题&#xff1a;定日镜场的优化设计问题1&#xff1a;建模将其抽象为数学公式问题2&#xff1a;固定部分参数&#xff0c;约束条件下的局部最优化问题可尝试方法 问题3&#xff1a;约束条件下的局部最优化问题附录&#xff1a;相关计算公式参考…...

ApachePulsar原理解析与应用实践(学习笔记一)

随着时代的发展&#xff0c;软件设计的理念也在不断发展&#xff0c;从单体服务、面向服务、微服务&#xff0c;发展到云原生以及无服务。其演变的过程是一个能力不断增强&#xff0c;领域边界不断微分细化的过程。比如无服务就是将函数作为服务&#xff0c;就类似dns模式的服务…...

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京财经大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京财经大学图书馆...

qt 信号与槽机制,登录界面跳转

登录界面跳转 配置文件 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # d…...

uniapp的两个跳转方式

uniapp内置多种跳转方式&#xff0c;我这里介绍两个最常用的跳转&#xff0c;uni.navigateTo和uni.switchTab&#xff0c;前者为跳转到非TabBar页面&#xff0c;后者为跳转到TabBar页面&#xff0c;所谓TabBar就是底部导航栏配置的页面&#xff0c;例如下方的index.vue。 在pa…...

【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论

文章目录 一、题目二、题解与代码三、神奇的BUG3.1 无法执行的 return 和 break 语句3.2 通过另一个 break 解决 一、题目 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发&#xff0c;到达它的家。 跳蚤跳跃的规则如下&#xff1a; 它可以 往前 跳恰好 a 个位…...

Calico IP In IP模拟组网

Calico IP In IP模拟组网 网络架构 模拟组网 先在k8s-master-1节点执行如下命令&#xff1a; # 创建veth-pair设备对ip link add veth1 type veth peer name eth0# 创建ns1网络命名空间ip netns add ns1# 将eth0网卡插入ns1网络命名空间ip link set eth0 netns ns1# 为ns1网…...

在linux上挂载windows共享目录

挂载要求 非root用户&#xff08;普通用户&#xff09;能够读写windows共享目录&#xff0c;比如查看文件、创建文件、修改文件、删除文件 # 让普通用户也可以正常读写 uidvalue and gidvalue Set the owner and group of the root of the file system (default: uidgid0, bu…...

drone的简单使用

&#xff08;一&#xff09;简介 Drone 是一个基于Docker容器技术的可扩展的持续集成引擎&#xff0c;用于自动化测试、构建、发布。每个构建都在一个临时的Docker容器中执行&#xff0c;使开发人员能够完全控制其构建环境并保证隔离。开发者只需在项目中包含 .drone.yml文件&…...

day 52 | 84.柱状图中最大的矩形

84.柱状图中最大的矩形 本题跟接雨水的思路是差不多的&#xff0c;不同的是接雨水找到的凹&#xff0c;这个找的是凸。因此是找到左右第一个比他小的值。因此单调栈中的顺序是从栈头到栈尾单调增。 需要注意的是&#xff0c;为了防止给定的元素是单调增或者单调减&#xff0c;…...

BUUCTF刷题十一道(08)

文章目录 [HITCON 2017]SSRFme[b01lers2020]Welcome to Earth[CISCN2019 总决赛 Day2 Web1]Easyweb[SWPUCTF 2018]SimplePHP[NCTF2019]SQLi[网鼎杯 2018]Comment[NPUCTF2020]ezinclude[HarekazeCTF2019]encode_and_encode[CISCN2019 华东南赛区]Double Secret[网鼎杯2018]Unfin…...

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像

快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像 项目介绍需要重点关注的几个文件构建cpu版本的docker构建gpu版本的docker&#xff08;cuda11.2cudnn8&#xff09; 阅读提示&#xff1a; &#xff08;1&#xff09;Paddle的Serving项目中&#xff0c;在t…...

SOLIDWORKS工程图自动零件序号的极致体验

在装配体工程图中零件序号的标注要求不能漏标、要和明细表项目相对应、位置适当并且要按序排列。 这些要求看似简单&#xff0c;但是却需要极大的精力去完成。当然在SOLIDWORKS中这些问题都被很好的解决了&#xff0c;这也是本次分享的内容。 自动序号标注 1) 在进行尺寸标注前…...

将ROS bag转成CSV

在放了bag包的工作空间下&#xff0c;执行如下命令 rostopic echo -b recorded_bag.bag -p /topic_name > csv_file.csv # -b表示接bag包 # -p表示将消息转为适合matlab或octave plot画图的格式 # recorded_bag.bag是记录下来的bag包 # /topic_name&#xff0c;以/开头&…...

jframe生成柱状图片+图片垂直合并+钉钉机器人推送

需求&#xff1a; 后端根据数据自动生成2个图片&#xff0c;然后把两张图片合并成一张图片&#xff0c;再发到钉钉群里&#xff0c;涉及到定时生成和推送&#xff0c;当时我们测试同事说他们写定时脚本放到服务器上&#xff0c;然后让我提供生成图片的方法和钉钉机器人的逻辑 天…...

如何用J-Link仿真PY32F003系列芯片

在用国产ARM芯片&#xff0c;仿真和烧录是必须的&#xff0c;但KEIL MDK也支持国产芯片在线仿真和下载。相信大家和我一样&#xff0c;苦于不会设置J-Link走了很多弯路。不管你用盗版的&#xff0c;还是正版的&#xff0c;都支持在线仿真和下载&#xff0c;只要是ARM核&#xf…...

# Go学习-Day10

Go学习-Day10 个人博客&#xff1a;CSDN博客 反射 编写函数适配器&#xff0c;序列化和反序列话可以用到 反射可以在运行时&#xff0c;动态获取变量的各种信息&#xff0c;例如类型&#xff0c;结构体本身的信息&#xff0c;修改变量的值&#xff0c;调用关联的方法 反射是…...

vue3:5、组合式API-reactive和ref函数

<script setup> /* reactive接收一个对象类型的数据&#xff0c;返回一个响应式的对象 *//*** ref:接收简单类型或复杂类型&#xff0c;返回一个响应式对象* 本质&#xff1a;是在原有传入数据的基础上&#xff0c;外层报了一层对象&#xff0c;包成了复杂类型* 底层&…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...