随笔分类 -  消息队列

摘要:一、概述 在分布式系统架构中,RocketMQ作为主流消息中间件,承担着业务解耦、流量削峰、异步通信的核心职责。但消息积压是其运行过程中高频出现的问题,一旦发生,轻则导致业务响应延迟(如订单状态同步慢、通知推送超时),重则引发Broker磁盘溢出、核心服务中断,直接影响用户体验与系统稳定性。 二、线 阅读全文
posted @ 2025-12-03 22:27 夏尔_717 阅读(38) 评论(0) 推荐(0)
摘要:一、概述 一个消息从开始到结束会经历这么三个阶段:生产阶段、消息队列Broker存储阶段和消费阶段。一个消息在三个阶段中的任何一个阶段都有可能丢失,知道这个之后,我们只要保证这三个阶段不出现问题,消息自然就不会出现丢失了。接下来我们来细说一下如何保证这三个阶段不出现问题。 二、生产阶段 生产阶段的使 阅读全文
posted @ 2023-12-01 11:48 夏尔_717 阅读(971) 评论(0) 推荐(0)
摘要:# 一、概述 1. `Disruptor`是英国外汇交易公司`LMAX`开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于`Disruptor`开发的系统单线程能支撑每秒`600`万订单,`2010`年在`QCon`演讲后,获得了业界关 阅读全文
posted @ 2023-06-09 15:25 夏尔_717 阅读(371) 评论(0) 推荐(0)
摘要:一、原理 1.1 消息存在哪了? 消息持久化的地方其实是磁盘上,在如下目录里的commitlog文件夹里。 /root/store/commitlog 源码如下: // {@link org.apache.rocketmq.store.config.MessageStoreConfig} // 数据 阅读全文
posted @ 2023-05-18 09:41 夏尔_717 阅读(532) 评论(0) 推荐(0)
摘要:一、概述 负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。 RocketMQ支持三种消息发送方式: 同步消息发送(sync):当Producer发送消息到Broker时会同步等待消息处理结果; 异步消息发送(async):当Produce 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(419) 评论(0) 推荐(0)
摘要:前言 RocketMQ是一个分布式具有高度可扩展性的消息中间件。本文旨在探索在broker端,生产端,以及消费端是如何做到横向扩展以及负载均衡的。 NameServer集群 提供轻量级的服务发现和路由。每个NameServer 记录完整的路由信息,提供等效的读写服务,并支持快速存储扩展。 就是一个注 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(474) 评论(0) 推荐(0)
摘要:前言 首先提出我们的监控诉求,出现如下情况时,希望能够及时接收到系统告警通知: RocketMQ服务宕机 RocketMQ消费者下线 RocketMQ消息出现长时间或者大量堆积 本文将通过修改rocketmq-console源码的方式,增加RocketMQ消费者下线和RocketMQ消息出现长时间或 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(1168) 评论(0) 推荐(0)
摘要:一、概述 对于任何一款消息中间件而言,消费者客户端一般有两种方式从消息中间件获取消息并消费: Push方式:由消息中间件(MQ消息服务器代理)主动地将消息推送给消费者;采用Push方式,可以尽可能实时地将消息发送给消费者进行消费。但是,在消费者的处理消息的能力较弱的时候(比如,消费者端的业务系统处理 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(467) 评论(0) 推荐(0)
摘要:一、概述 Apache RocketMQ在4.3.0版中已经支持分布式事务消息,通过消息的异步事务,可以保证本地事务和消息发送同时执行成功或失败,从而保证了数据的最终一致性。 二、案例 根据官方提供的例子,TransactionProducer.java如下: public class Transa 阅读全文
posted @ 2023-05-06 18:52 夏尔_717 阅读(1079) 评论(0) 推荐(0)
摘要:一、概述 Producer对发送失败的消息进行重新发送的机制,称为消息发送重试机制,也称为消息重投机制。 对于消息重投,需要注意以下几点: 生产者在发送消息时,若采用同步或异步发送方式,发送失败会重试,但oneway消息发送方式发送失败是没有重试机制的; 只有普通消息具有发送重试机制,顺序消息是没有 阅读全文
posted @ 2023-05-06 13:50 夏尔_717 阅读(2383) 评论(0) 推荐(0)
摘要:一、概述 消息轨迹是用来跟踪记录消息发送、消息消费的轨迹。 如何启用消息轨迹? broker端 需要在broker端的配置文件中添加配置项:traceTopicEnable=true,注意:对于消息轨迹数据量较大的场景,可以在RocketMQ集群中选择其中一个Broker节点专用于存储消息轨迹,使得 阅读全文
posted @ 2023-05-06 13:49 夏尔_717 阅读(548) 评论(0) 推荐(0)
摘要:一、概述 RocketMQ消息队列集群主要包括NameServer、Broker(Master/Slave)、Producer、Consumer4个角色,基本通讯流程如下: Broker启动后需要完成一次将自己注册至NameServer的操作;随后每隔30s时间定时向NameServer上报Topi 阅读全文
posted @ 2023-05-06 13:49 夏尔_717 阅读(424) 评论(0) 推荐(0)
摘要:一、概述 消息持久化存储是MQ消息队列中最为复杂和最为重要的一部分,本文先从目前几种比较常用的MQ消息队列存储方式出发,为大家介绍RocketMQ选择磁盘文件存储的原因。然后,本文分别从RocketMQ的消息存储整体架构和RocketMQ文件存储模型层次结构两方面进行深入分析介绍。使得大家读完本文后 阅读全文
posted @ 2023-05-05 19:05 夏尔_717 阅读(3326) 评论(0) 推荐(0)
摘要:一、简介 RocketMQ是阿里巴巴开源的分布式消息中间件。支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它里面有几个区别于标准消息中件间的概念,如Group、Topic、Queue等。系统组成则由Producer、Consumer、Broker、NameServer等。 RocketMQ 阅读全文
posted @ 2022-04-22 18:27 夏尔_717 阅读(587) 评论(0) 推荐(0)
摘要:一、基本概念 1.1 消息模型(Message Model) RocketMQ主要由Producer、Broker、Consumer三部分组成,其中Producer负责生产消息,Consumer负责消费消息,Broker负责存储消息。Broker在实际部署过程中对应一台服务器,每个Broker可以存 阅读全文
posted @ 2022-04-22 18:19 夏尔_717 阅读(816) 评论(0) 推荐(0)