当前位置: 首页 > 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;包成了复杂类型* 底层&…...

用Field II和MATLAB搞定超声波声场仿真:从理论推导到代码实战(附源码)

用Field II和MATLAB搞定超声波声场仿真&#xff1a;从理论推导到代码实战&#xff08;附源码&#xff09; 在医学超声成像和无损检测领域&#xff0c;精确模拟声场分布是优化成像质量的关键环节。Field II作为业界公认的超声波仿真工具&#xff0c;其强大的计算能力背后隐藏着大…...

当流程图XML“损坏”时:手把手教你用Activiti API解析与修复BPMN文件

当BPMN文件遭遇“数据灾难”&#xff1a;Activiti深度修复实战指南 凌晨三点&#xff0c;服务器警报突然响起——核心业务流程引擎拒绝加载最新上传的BPMN文件。这不是简单的格式错误&#xff0c;而是一个从老旧系统迁移来的、经过多次手工编辑的流程定义文件。作为技术负责人&…...

STM32 FSMC外部存储器接口配置与调试实战指南

1. 项目概述&#xff1a;为什么FSMC是STM32连接外部存储器的“瑞士军刀”如果你玩过STM32&#xff0c;尤其是那些带屏幕、需要大容量数据缓存或者要跑复杂UI的型号&#xff0c;比如F1、F4、H7系列&#xff0c;那你大概率绕不开一个外设&#xff1a;FSMC&#xff0c;全称Flexibl…...

全球仅12家顶级艺术机构内部流通的Perplexity知识图谱映射表(含RIS/JSON-LD双格式导出密钥)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity艺术知识搜索的范式革命 传统搜索引擎依赖关键词匹配与页面权重排序&#xff0c;在艺术史、当代策展理论、跨媒介创作方法论等高度语境化、隐喻密集的知识领域中&#xff0c;常陷入“查得到却…...

Marshall 推出新款头戴式耳机 Milton ANC:音质续航兼得,售价 229 美元!

ZDNET 要点总结Milton ANC 是 Marshall 最新推出的头戴式耳机&#xff0c;在音质、耐用性和电池续航方面毫不妥协&#xff0c;售价为 229 美元。Marshall 宣布推出全新头戴式耳机——Milton ANC&#xff0c;它承诺在不牺牲电池续航的前提下&#xff0c;带来标志性的音效体验&am…...

智能安卓主板选型指南:从需求分析到量产落地的全流程解析

1. 项目概述&#xff1a;智能安卓主板选型的核心价值在嵌入式开发和智能硬件项目里&#xff0c;选对一块主板&#xff0c;往往意味着项目成功了一半。我见过太多团队&#xff0c;前期功能设计得天花乱坠&#xff0c;结果卡在了硬件选型上&#xff0c;要么性能过剩成本失控&…...

YOLOv8模型家族全解析:P2、P6、标准版到底该选哪个?一张图帮你搞定选择困难症

YOLOv8模型家族全解析&#xff1a;P2、P6、标准版到底该选哪个&#xff1f; 在计算机视觉项目的初期&#xff0c;模型选型往往是最令人头疼的环节。面对GitHub仓库中琳琅满目的YAML配置文件&#xff0c;即便是经验丰富的工程师也难免陷入选择困难。YOLOv8作为当前最先进的目标检…...

2025届学术党必备的AI辅助写作方案实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 跟着学术钻研持续深入&#xff0c;开题报告身为钻研项目要紧起点&#xff0c;它的质量径直作…...

告别本地图片!用GitHub+PicGo+Typora三件套,打造无缝Markdown写作体验(保姆级避坑指南)

零成本构建云端图床&#xff1a;GitHubPicGoTypora全自动化写作方案 在技术写作和知识管理领域&#xff0c;Markdown已成为事实上的标准格式。然而&#xff0c;当文档中需要插入大量图片时&#xff0c;传统本地存储方式会带来三个致命问题&#xff1a;文档分享时图片丢失、版本…...

别再死循环了!手把手教你用Python实现D*算法(附完整代码与避坑指南)

从理论到实践&#xff1a;Python实现D*算法的工程化指南与避坑策略 路径规划中的动态适应挑战 在机器人导航和游戏AI开发中&#xff0c;路径规划算法扮演着至关重要的角色。传统算法如A*和Dijkstra虽然能有效解决静态环境下的路径规划问题&#xff0c;但在动态变化的环境中却显…...