首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RocketMQ消息轨迹-设计篇

RocketMQ消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关。...RocketMQ消息轨迹,主要跟踪消息发送、消息消费的轨迹,即详细记录消息各个处理环节的日志,从设计上至少需要解决如下三个核心问题: 消费轨迹数据格式 记录消息轨迹(消息日志) 消息轨迹数据存储在哪?...消息轨迹数据格式 RocketMQ4.5版本消息轨迹主要记录如下信息: traceType 跟踪类型,可选值:Pub(消息发送)、SubBefore(消息拉取到客户端,执行业务定义的消费逻辑之前)、SubAfter...既然把消息轨迹当成消息存储在Broker服务器,那存储消息轨迹的Topic如何确定呢?RocketMQ提供了两种方法来定义消息轨迹的Topic。...自定义Topic 在创建消息生产者或消息消费者时,可以通过参数自定义用于记录消息轨迹的Topic名称,不过要注意的是,rokcetmq控制台(rocketmq-console)中只支持配置一个消息轨迹Topic

2.3K30

源码分析RocketMQ消息轨迹

本文沿着RocketMQ消息轨迹-设计篇的思路,从如下3个方面对其源码进行解读: 发送消息轨迹 消息轨迹格式 存储消息轨迹数据 发送消息轨迹流程 ---- 首先我们来看一下在消息发送端如何启用消息轨迹,...其实行文至此,只关注了消息发送的消息轨迹跟踪,消息消费的轨迹跟踪又是如何呢?...消息轨迹数据如何存储 ---- 其实从上面的分析,我们已经得知,RocketMQ消息轨迹数据存储在到Broker上,那消息轨迹的主题名如何指定?其路由信息又怎么分配才好呢?...RocketMQ支持系统默认与自定义消息轨迹的主题。 2.1 使用系统默认的主题名称 RocketMQ默认的消息轨迹主题为:RMQ_SYS_TRACE_TOPIC,那该Topic需要手工创建吗?...温馨提示:通常在生产环境上,不会开启自动创建主题,故需要RocketMQ运维管理人员提前创建好Topic。

2K50
您找到你想要的搜索结果了吗?
是的
没有找到

RocketMQ消息轨迹【源码笔记】

broker.conf配置的两个属性 属性 默认值 traceTopicEnable false msgTraceTopicName RMQ_SYS_TRACE_TOPIC 在一个集群中可以配置一台机器专门负责消息轨迹的收集工作...(this.getDefaultMQProducerImpl()); traceDispatcher = dispatcher; //为消息轨迹注册...AsyncTraceDispatcher 主要负责消息的发送工作;内部队列,由线程池批量(100条)发送 Hook调用 发送前hook调用 //如果有hook在消息发送前执行,消息轨迹通过这种方式记录...(context); } 发送轨迹 Producer启动时注册钩子,该钩子持有负责消息发送的AsyncTraceDispatcher实例,消息发送后进而发送消息轨迹 发送轨迹消息格式 ?...3.客户端消费轨迹实现 消费轨迹:与消息发送的轨迹实现思路相同 DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CID_JODIE

1.3K30

5 张图带你彻底理解 RocketMQ 轨迹消息

为了方便跟踪消息发送和消费的轨迹RocketMQ 引入了轨迹消息,今天一起来学习一下。 1 开启轨迹消息 默认情况下,RocketMQ 是不开启轨迹消息的,需要我们手工开启。...如果想要轨迹消息和业务消息隔离,可以专门用一个 Broker 来保存轨迹消息,这样需要单独在这个 Broker 上开启轨迹消息。 4 消费端处理 消费端对轨迹消息的处理跟生产端非常类似。...消费端轨迹消息的内容如下图: 5 总结 本文主要讲解了 RocketMQ轨迹消息实现机制。...轨迹消息分为生产端和消费端的轨迹消息,生产端和消费端 RocketMQ 都提供了构造函数来指定是否开启轨迹消息。...如下图: 理解了 traceDispatcher 和钩子函数 ,就很容易理解 RocketMQ 轨迹消息的处理逻辑了。

64620

RocketMQ消息存储

因为有如此巨大的速度差别,好的消息队列系统会比普通的消息队列系统速度快多个数量级。RocketMQ消息用顺序写,保证了消息存储的速度。...\ 3 消息存储结构 RocketMQ消息的存储分为三个部分: CommitLog:存储消息的元数据。所有消息都会顺序存入到CommitLog文件当中。...\ RocketMQ消息重试 然后RocketMQ默认允许每条消息最多重试16次,每次重试的间隔时间如下: 这个重试时间跟延迟消息的延迟级别是对应的。不过取的是延迟级别的后16级别。...8、死信队列 当一条消息消费失败,RocketMQ就会自动进行消息重试。而如果消息超过最大重试次数,RocketMQ就会认为这个消息有问题。...RocketMQ中可以直接用异步发送、sendOneWay等方式就可以保证。 而at least once这个语义,RocketMQ也有同步发送、事务消息等很多方式能够保证。

70920

RocketMQ 延迟消息

概述 RocketMQ 支持发送延迟消息,但不支持任意时间的延迟消息的设置,仅支持内置预设值的延迟时间间隔的延迟消息。...broker在接收到延迟消息的时候会把对应延迟级别的消息先存储到对应的延迟队列中,等延迟消息时间到达时,会把消息重新存储到对应的topic的queue里面。...; } } // 省略代码 ........ } 1、判断该消息类型,如果是非事物消息或事物已commit消息,才能处理延迟消息。...2、判断该消息是否设置延迟,如果延迟级别大于零,则说明该消息时延迟消息。...一个延迟级别对应一个 Queue 6、消息原始的 Topic 名称和 QueueId 备份保存到 property 中 7、修改消息的 topic 和 queueId,让该消息先投递到延迟消息队列中

2.5K20

RocketMQ消息存储

因为有如此巨大的速度差别,好的消息队列系统会比普通的消息队列系统速度快多个数量级。RocketMQ消息用顺序写,保证了消息存储的速度。...\ 3 消息存储结构 RocketMQ消息的存储分为三个部分: CommitLog:存储消息的元数据。所有消息都会顺序存入到CommitLog文件当中。...\ RocketMQ消息重试 然后RocketMQ默认允许每条消息最多重试16次,每次重试的间隔时间如下: 这个重试时间跟延迟消息的延迟级别是对应的。不过取的是延迟级别的后16级别。...8、死信队列 当一条消息消费失败,RocketMQ就会自动进行消息重试。而如果消息超过最大重试次数,RocketMQ就会认为这个消息有问题。...RocketMQ中可以直接用异步发送、sendOneWay等方式就可以保证。 而at least once这个语义,RocketMQ也有同步发送、事务消息等很多方式能够保证。

63330

RocketMQ进阶-延时消息

的延时消息解决。...在创建订单的时候发送一条延时消息RocketMQ,30分钟后消费者消费消息去检查订单的状态,如果发现订单未支付则取消订单释放库存。...实现 RocketMQ延迟队列的核心思路是:所有的延迟消息由producer发出之后,都会存放到同一个topic(SCHEDULE_TOPIC_XXXX)下,不同的延迟级别会对应不同的队列序号,当延迟时间到之后...6m 7m 8m 9m 10m 20m 30m 1h 2h"; 下面我们结合SprintBoot利用RocketMQ发送延时消息 引入RocketMQ组件 <groupId...RocketMQ 相关文章 RocketMQ 入门基础 - 环境 & 整合 RocketMQ进阶-事务消息 好了,各位朋友们,本期的内容到此就全部结束啦,能看到这里的同学都是优秀的同学,下一个升职加薪的就是你了

2.7K31

RocketMQ 常用消息类型

消息发送示例 导入依赖: org.apache.rocketmq rocketmq-spring-boot-starter...RocketMQ异步发送,需要实现异步发送回调接口(SendCallback)。消息发送方在发送了一条消息后,不需要等待服务端响应即可发送第二条消息。...概念: 事务消息消息队列RocketMQ提供类似X/Open XA的分布式事务功能,通过消息队列RocketMQ事务消息能达到分布式事务的最终一致。...分布式事务消息的优势: 消息队列RocketMQ分布式事务消息不仅可以实现应用之间的解耦,又能保证数据的最终一致性。...事务消息发送步骤如下: 发送方将半事务消息发送至消息队列RocketMQ服务端。 消息队列RocketMQ服务端将消息持久化成功之后,向发送方返回Ack确认消息已经发送成功,此时消息为半事务消息

84030

Rocketmq--消息驱动

RocketMQ入门 RocketMQ是阿里巴巴开源的分布式消息中间件,现在是Apache的一个顶级项目。在阿里内部使用非常广泛,已经经过了"双11"这种万亿级的消息流转。...测试RocketMQ 1 测试消息发送 [root@maruifu rocketmq]# export NAMESRV_ADDR=localhost:9876 [root@maruifu rocketmq...普通消息 RocketMQ提供三种方式来发送普通消息:可靠同步发送、可靠异步发送和单向发送。...("test-topic-1", "这是一条异步顺序消息", "xxxx"); } 事务消息 RocketMQ提供了事务消息,通过事务消息就能达到分布式事务的最终一致。...事务消息发送步骤: 发送方将半事务消息发送至RocketMQ服务端。 RocketMQ服务端将消息持久化之后,向发送方返回Ack确认消息已经发送成功,此时消息为半事务消息

65440

RocketMQ】发送事务消息

半事务消息:暂不能投递的消息,生产者已经成功地将消息发送到了RocketMQ服务端,但是RocketMQ服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,处于该种状态下的消息即半事务消息...消息回查:由于网络闪断、生产者应用重启等原因,导致某条事务消息的二次确认丢失,RocketMQ服务端通过扫描发现某条消息长期处于“半事务消息”时,需要主动向消息生产者询问该消息的最终状态(Commit或是...分布式事务消息的优势 RocketMQ分布式事务消息不仅可以实现应用之间的解耦,又能保证数据的最终一致性。...事务消息发送步骤如下: 1.生产者将半事务消息发送至RocketMQ服务端。 2.RocketMQ服务端将消息持久化成功之后,向生产者返回Ack确认消息已经发送成功,此时消息为半事务消息。...ROLLBACK_MESSAGE:回滚事务,消息将被丢弃不允许消费。 UNKNOW:暂时无法判断状态,等待固定时间以后消息队列RocketMQ版服务端根据回查规则向生产者进行消息回查。

1.1K20

RocketMQ进阶-事务消息

前言 分布式消息选型的时候是否支持事务消息是一个很重要的考量点,而目前只有RocketMQ对事务消息支持的最好。今天我们来唠唠如何实现RocketMQ的事务消息!...Apache RocketMQ在4.3.0版中已经支持分布式事务消息,这里RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息,如下图所示。 ?...RocketMQ事务流程概要 RocketMQ实现事务消息主要分为两个阶段:正常事务的发送及提交、事务信息的补偿流程 整体流程为: 正常事务发送与提交阶段 1、生产者发送一个半消息给MQServer(半消息是指消费者暂时不能消费的消息...RocketMQ事务流程关键 1、事务消息在一阶段对用户不可见 事务消息相对普通消息最大的特点就是一阶段发送的消息对用户是不可见的,也就是说消费者不能直接消费。...当然了rocketmq并不会无休止的的信息事务状态回查,默认回查15次,如果15次回查还是无法得知事务状态,RocketMQ默认回滚该消息

1.6K20

详解RocketMQ事务消息

详解RocketMQ事务消息 事务消息RocketMQ提供的非常重要的一个特性,在4.x版本之后开源,可以利用事务消息轻松地实现分布式事务。...本文对RocketMQ的事务消息进行详细介绍,并给出了代码示例。 一....相关概念 RocketMQ在其消息定义的基础上,对事务消息扩展了两个相关的概念: Half(Prepare) Message——半消息(预处理消息) 半消息是一种特殊的消息类型,该状态的消息暂时不能被...代码实例 本节通过一个简单的场景模拟RocketMQ的事务消息:存在2个微服务,分别是订单服务和商品服务。订单服务进行下单处理,并发送消息给商品服务,对于下单成功的商品进行减库存。...首先是订单服务: /** * @Auther: ZhangShenao * @Date: 2019/3/27 16:44 * @Description:使用RocketMQ事务消息——订单服务发送事务消息

1.2K20

消息中间件—RocketMQ消息发送

因此,本篇主要从一条消息发送为切入点,详细阐述在RocketMQ这款分布式消息队列中发送一条普通消息的大致流程和细节。...在阅读本篇之前希望读者能够先仔细读下关于RocketMQ分布式消息队列Remoting通信模块的两篇文章: (1)消息中间件—RocketMQ的RPC通信(一) (2)消息中间件—RocketMQ的...RPC通信(二) 一、RocketMQ网络架构图 RocketMQ分布式消息队列的网络部署架构图如下图所示(其中,包含了生产者Producer发送普通消息至集群的两条主线) ?...RocketMQ消息代理服务器备份节点,主要是通过同步/异步的方式将主节点的消息同步过来进行备份,为RocketMQ集群的高可用性提供保障; (4)Producer(消息生产者):在这里为普通消息的生产者...,主要基于RocketMQ-Client模块将消息发送至RocketMQ的主节点。

2.3K30

RocketMQ源码详解:事务消息、批量消息、延迟消息

◆ 事务消息 ◆ 概念 RocketMQ 中的事务消息功能,实际上是 分布式事务中的本地事务表 的实现,只不过,在这里用消息中间件来代替了数据库,同时也帮我们做好了回查的操作。...this.send(msg); 具体发送流程见:RocketMQ源码详解 | Producer篇 · 其一:Start,然后 Send 一条消息 ◆ 第二步 在 Broker 端接收到消息以后,会走与普通消息相同的底层通道...普通消息的具体流程见 RocketMQ源码详解 | Broker篇 · 其二:文件系统 ◆ 第三步 回到 Producer 端,在事务消息发送完成后,该方法会使用专门的线程池执行事务 // 2.执行本地事务...有点失望的是,RocketMQ 对于批量消息的实现有点"粗糙"了 ◆ 源码流程 首先,在调用 send() 的 batch 版本后,会先对批量消息进行校验 批量消息不允许延时、不允许发送到重试 Topic...即 RocketMQ 使用批量消息只减少了发送时的宽带传输,对于存储与交给消费者的部分并没有获得优化 // 拆分批量消息为每一个普通消息while (messagesByteBuff.hasRemaining

1.2K20

消息队列| RocketMQ 核心原理

介绍路由注册机制之前,先简单看下 RocketMQ 的整体架构: Producer:消息生产者,用于向消息服务器发送消息; NameServer:路由注册中心; Broker:消息存储服务器; Consumer...RocketMQ的队列负载原则是一个消费者可以承担同一主题下的多个消息消费队列,但同一个消息消费队列同一时间只允许被分配给一个消费者。...RocketMQ 解决该问题的策略是引入消费端的限流机制。 RocketMQ 消息消费端的限流的两个维度: A....RocketMQ事务消息的实现原理是类似基于二阶段提交与事务状态回查来实现的。事务消息的发送只支持同步方式,其实现的关键点包括: A....以上只是 RocketMQ 所有核心的一部分,在文章的结尾处,我想再分享一下我学习 RocketMQ的一些心得: A. 通读 RocketMQ 官方文档,从全局上了解 RocketMQ。 B.

3.5K31

RocketMQ 源码分析 —— 定时消息消息重试

定时消息 2.1 延迟级别 2.2 Producer 发送定时消息 2.3 Broker 存储定时消息 2.4 Broker 发送定时消息 2.5 Broker 持久化定时发送进度 3....消息重试 ---- 1. 概述 建议前置阅读内容: 《RocketMQ 源码分析 —— Message 发送与接收》 《RocketMQ 源码分析 —— Message 拉取与消费(下)》 ?...定时消息 定时消息是指消息发到 Broker 后,不能立刻被 Consumer 消费,要到特定的时间点或者等待特定的时间后才能被消费。 下图是定时消息的处理逻辑图: ?...定时消息逻辑图.png 2.1 延迟级别 RocketMQ 目前只支持固定精度的定时消息。...消息重试 Consumer 消费消息失败后,要提供一种重试机制,令消息再消费一次。 ? Consumer 将消费失败的消息发回 Broker,进入延迟消息队列。即,消费失败的消息,不会立即消费。

71140
领券