网站如何做移动适配,网站查看,沈阳专业做网站,晋城建设局网站RocketMQ 消息轨迹主要包含两篇文章#xff1a;设计篇与源码分析篇#xff0c;本节将详细介绍RocketMQ消息轨迹-设计相关。RocketMQ消息轨迹#xff0c;主要跟踪消息发送、消息消费的轨迹#xff0c;即详细记录消息各个处理环节的日志#xff0c;从设计上至少需要解决如下…RocketMQ 消息轨迹主要包含两篇文章设计篇与源码分析篇本节将详细介绍RocketMQ消息轨迹-设计相关。RocketMQ消息轨迹主要跟踪消息发送、消息消费的轨迹即详细记录消息各个处理环节的日志从设计上至少需要解决如下三个核心问题消费轨迹数据格式记录消息轨迹(消息日志)消息轨迹数据存储在哪1、消息轨迹数据格式RocketMQ4.5版本消息轨迹主要记录如下信息traceType跟踪类型可选值Pub(消息发送)、SubBefore(消息拉取到客户端执行业务定义的消费逻辑之前)、SubAfter(消费后)。timeStamp当前时间戳。regionIdbroker所在的区域ID取自BrokerConfig#regionId。groupName组名称traceType为Pub时为生产者组的名称如果traceType为subBefore或subAfter时为消费组名称。requestIdtraceType为subBefore、subAfter时使用消费端的请求Id。topic消息主题。msgId消息唯一ID。tags消息tag。keys消息索引key根据该key可快速检索消息。storeHost跟踪类型为PUB时为存储该消息的Broker服务器IP跟踪类型为subBefore、subAfter时为消费者IP。bodyLength消息体的长度。costTime耗时。msgType消息的类型可选值Normal_Msg(普通消息),Trans_Msg_Half(预提交消息),Trans_msg_Commit(提交消息),Delay_Msg(延迟消息)。offsetMsgId消息偏移量ID,该ID中包含了broker的ip以及偏移量。success是发送成功。contextCode消费状态码可选值SUCCESS,TIME_OUT,EXCEPTION,RETURNNULL,FAILED。2、记录消息轨迹消息中间件的两大核心主题消息发送、消息消费其核心载体就是消息消息轨迹(消息的流转)主要是记录消息是何时发送到哪台Broker发送耗时多少时间在什么是被哪个消费者消费。记录消息的轨迹主要是集中在消息发送前后、消息消费前后可以通过RokcetMQ的Hook机制。通过如下两个接口来定义钩子函数。通过实行上述两个接口可以实现在消息发送、消息消费前后记录消息轨迹为了不明显增加消息发送与消息消费的时延记录消息轨迹最好使用异步发送模式。3、如何存储消息轨迹数据消息轨迹需要存储什么消息以及在什么时候记录消息轨迹的问题都以及解决那接下来就得思考将消息轨迹存储在哪里存储在数据库中或其他媒介中都会加重消息中间件使其依赖外部组件最佳的选择还是存储在Broker服务器中将消息轨迹数据也当成一条消息存储到Broker服务器。既然把消息轨迹当成消息存储在Broker服务器那存储消息轨迹的Topic如何确定呢RocketMQ提供了两种方法来定义消息轨迹的Topic。系统默认Topic如果Broker的traceTopicEnable配置设置为true表示在该Broker上创建topic名为RMQ_SYS_TRACE_TOPIC队列个数为1默认该值为false表示该Broker不承载系统自定义用于存储消息轨迹的topic。自定义Topic在创建消息生产者或消息消费者时可以通过参数自定义用于记录消息轨迹的Topic名称不过要注意的是rokcetmq控制台(rocketmq-console)中只支持配置一个消息轨迹Topic故自定义Topic在目前这个阶段或许还不是一个最佳实践建议使用系统默认的Topic即可。通常为了避免消息轨迹的数据与正常的业务数据混合在一起官方建议在Broker集群中新增加一台机器只在这台机器上开启消息轨迹跟踪这样该集群内的消息轨迹数据只会发送到这一台Broker服务器上并不会增加集群内原先业务Broker的负载压力。