RocketMQ 跟踪消息发送轨迹

news2024/9/21 0:46:55

目录

  • 概述
  • 实践
    • 如何启用消息轨迹
    • 配置
    • 创建Topic
    • 代码
    • 测试
  • 结束

概述

阅读此文可以解决 RocketMQ 中消息是否发送成功,是否消费成功。

查询消息轨迹可作为生产环境中排查问题强有力的数据支持 ,也是研发同学解决线上问题的重要武器之一。

详细如下:

  • 引入轨迹的目的
    • 轨迹是实实在在的话,那么可以避免一些相互 扯皮 的问题
    • 证实生产者是否发送了消息,也可以证实消费者是否消费了消息
    • 通过轨迹,有如下的信息:
      • 从哪里来
      • 什么时间到来
      • 停留在哪里
      • 停留的时间
      • 去向哪里
      • 去向的时间是多少
  • 如何实践

RocketMQ 源码中有相关文档
在这里插入图片描述

实践

默认情况下消息轨迹是存储在 RMQ_SYS_TRACE_TOPIC ,此外消息轨迹还可以存储在用户自定义的 topic 中。

注意:一般采取默认即可,自定义不在此介绍。

如何启用消息轨迹

  • broker端
    需要在broker端的配置文件中添加配置项:traceTopicEnable=true,注意:对于消息轨迹数据量较大的场景,可以在 RocketMQ 集群中选择其中一个 Broker 节点专用于存储消息轨迹,使得用户普通的消息数据与消息轨迹数据的物理 IO 完全隔离,互不影响。
  • 客户端
    producer 端和 consumer 端需要启用消息轨迹,具体是在初始化客户端时打开打开启用消息轨迹的开关并根据实际需求决定是否使用默认的 topic 来存储消息轨迹

配置

[root@hadoop02 conf]# pwd
/data/soft/rocketmq-all-5.1.4-bin-release/conf
[root@hadoop02 conf]# 

[root@hadoop02 conf]# vi broker.conf 
## if msg tracing is open,the flag will be true
traceTopicEnable=true

创建Topic

sh bin/mqadmin updateTopic -n localhost:9876 -c DefaultCluster -t test-topic3

代码

注意: new DefaultMQProducer("ProducerGroupName", true);trace-key 的设置。

public class RocketMQMsgTraceProducer {
    public static void main(String[] args) throws MQClientException {
        DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", true);
        producer.setNamesrvAddr("10.32.36.143:9876");
        producer.start();
        try {
            {
                Message msg = new Message("test-topic3",
                        "TagA",
                        "trace-key",
                        "Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
                SendResult sendResult = producer.send(msg);
                System.out.printf("%s%n", sendResult);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

测试

执行消息发送,得到如下结果 ,证明配置成功。
在这里插入图片描述

在这里插入图片描述
上图主要内容如下:

  • topic:消息主题
  • msgId:消息唯一ID
  • offsetMsgId:消息偏移量ID,该ID中包含了Broker的IP以及偏移量
  • tags:消息标志
  • keys:消息索引key,根据该key可快速检索消息
  • storeHost:跟踪类型为Pub时存储该消息的Broker服务器IP
  • msgType:消息的类型,可选值为Normal_Msg(普通消息)、Trans_Msg_Half(预提交消息)、Trans_msg_Commit(提交消息)、Delay_Msg(延迟消息)

结束

至此,RocketMQ 支持消息轨迹详查 就结束了,如有疑问,欢迎评论区留言。

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

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

相关文章

Navicat16 无限试用 亲测有效

Navicat16 无限试用 亲测有效 亲测有效!!! 吐槽下,有的用不了,有的是图片,更甚者还有收费的,6的一批 粘贴下面的代码,保存到桌面,命名为 trial-navicat16.bat echo off…

DDOS攻击方式有哪些,要如何防护

DDOS攻击我们也称之为流量攻击,分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDOS)于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者…

【漏洞复现】I Doc View在线文档预览任意文件读取 1day

漏洞描述 I Doc View在线文档预览是一款在线文档预览系统,可以实现文档的预览及文档协作编辑功能。其存在代码执行漏洞,使得攻击者可以通过利用这个接口,触发服务器下载并解析恶意文件,从而导致远程命令执行漏洞。进而控制服务器…

Leetcode—896.单调数列【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—896.单调数列 实现代码 class Solution { public:bool isMonotonic(vector<int>& nums) {int up 0;int down 0;if(nums.size() 1) {return true;}for(int i 0; i < nums.size() - 1; i) {if(nums[i] …

LTC是什么意思?CRM怎样帮助这一流程的实现?

在现代商业环境下&#xff0c;将潜在客户转化成实际销售是公司成功的基石之一。而CRM管理系统是完成LTC的有效工具。本文将向您介绍LTC是什么&#xff1f;公司怎样企业如何通过CRM实现这一流程的&#xff1f; LTC&#xff08;从线索到现金&#xff09;是企业运营管理中的一个重…

go学习之网络编程

文章目录 网络编程1、网络编程的基本介绍2.网络编程的基础知识1&#xff09;协议(tcp/ip)2&#xff09;OSI与TCP/ip参考模型3&#xff09;ip地址4&#xff09;端口(port)介绍5&#xff09;tcp socket编程的客户端和服务器端 3.socket编程快速入门4.经典项目-海量用户即时通讯系…

什么是POM设计模式?

为什么要用POM设计模式 前期&#xff0c;我们学会了使用PythonSelenium编写Web UI自动化测试线性脚本 线性脚本&#xff08;以快递100网站登录举栗&#xff09;&#xff1a; import timefrom selenium import webdriver from selenium.webdriver.common.by import Bydriver …

【媒体开发】利用FFMPEG进行推拉流

目录 1. 下载并启动媒体服务 2. 使用 FFMPEG 拉流并推送到指定服务地址 3. 客户端拉流 1. 下载并启动媒体服务 MediaMTX&#xff0c;也即之前的rtsp-simple-server&#xff0c;是一个即用型、零依赖的实时媒体服务器和媒体代理&#xff0c;允许发布、读取、代理和记录视频和…

react经验8:使用antd的checkbox实现全选与半选控制

预期实现的效果 列表项部分选中时&#xff0c;checkall处于半选状态&#xff0c;点击checkall要么全选&#xff0c;要么全不选。 实现步骤 列表项类型 declare type TableRow {key: Keytitle: stringisSelected?: boolean }示范数据 const [tabledata, setTabledata] u…

HarmonyOS4.0从零开始的开发教程16数据管理

HarmonyOS&#xff08;十四&#xff09;数据管理 1 概述 在移动互联网蓬勃发展的今天&#xff0c;移动应用给我们生活带来了极大的便利&#xff0c;这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置&#xff0c;HarmonyOS应用开发也不例外…

低功耗蓝牙模块常见天线输出方式及选型建议

随着互联网技术的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已经渗透到了我们生活的方方面面。作为物联网的关键技术之一&#xff0c;BLE&#xff08;低功耗蓝牙&#xff09;技术在汽车电子、智能家居、穿戴设备、工业自动化等领域发挥着举足轻重的作用。深圳市信…

一入二出热电阻温度信号隔离变送器

一入二出热电阻温度信号隔离变送器 用于测量铂热电阻Pt10,Pt100,Pt1000,Cu50,Cu100的热电阻传感器的小型仪器设备。广泛应用于工业测量温度系统&#xff0c;是降低成本且有效的测量方式。 型号&#xff1a;JSD TARZ-1002系列 我们来看下有什么特点&#xff1a; ◆小体积&#x…

ShenYu网关注册中心之Zookeeper注册原理

文章目录 1、客户端注册流程1.1、读取配置1.1.1、用于注册的 ZookeeperClientRegisterRepository1.1.2、用于扫描构建 元数据 和 URI 的 SpringMvcClientEventListener 1.2、扫描注解&#xff0c;注册元数据和URI1.2.1、构建URI并写入Disruptor1.2.2、构建元数据并写入Disrupto…

今天最新早上好问候语,清晨阳光暖心的早安问候语录

1、花以芳香而美&#xff0c;人以真诚而贵。心以善良而德&#xff0c;缘以相识而聚。彼此保重&#xff0c;相约美好。每一个清晨&#xff0c;都是快乐的开始。早安吉祥&#xff01; ​ 2、拿起手机想到你&#xff0c;我把祝福送给你&#xff0c;虽然天天在重复&#xff0c;证明…

算法 - 无重复字符的最长子串(03)

原理&#xff1a; 定义左右两个指针&#xff0c;保证两个指针对应的子串中没有重复的字符&#xff0c;寻找并记录最长的子串长度。如果窗口满足条件&#xff0c;右指针向右滑动扩大窗口&#xff0c;更新最优值&#xff1b;如果窗口不满足条件&#xff0c;左指针向右缩小窗口。…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

L1-041:寻找250

题目描述 对方不想和你说话&#xff0c;并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式&#xff1a; 输入在一行中给出不知道多少个绝对值不超过1000的整数&#xff0c;其中保证至少存在一个“250”。 输出格式&#xff1a; 在一行中…

移植Modelsim仿真工程

背景 上班在公司用的PC1生成并完整的进行了仿真&#xff0c;打包成zip&#xff0c;经过微信传输并在家里的PC2上打开想要继续进行仿真&#xff0c;需要如何处理呢&#xff1f; 环境 软件路径公司PC1Quartus II Prime Pro 21.4C:\intelfpga_pro\21.4\quartus\bin64\qpro.exeMo…

Nginx与keepalived高可用节点搭建实验

本文主要介绍了nginxkeepalived的部署实验&#xff0c;并简单说明了nginx的集中负载分担模式 简介&#xff1a; nginx可以通过反向代理功能对后端服务器实现负载均衡功能 keepalived 是一种高可用集群选举软件 keepalived架构 分为三个模块&#xff1a; 1、keepalived core …

基于java的医院住院管理系统的设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…