程序员秋天
10年+后端研发和架构经验,擅长分布式,高性能、高并发架构设计,关注分布式、云原生、数字化、开源等
展开
-
RocketMQ入门第一课
NameServer成功启动后,我们启动Broker和Proxy,5.x 版本下我们建议使用 Local 模式部署,即 Broker 和 Proxy 同进程部署。在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量。Apache RocketMQ是一个分布式消息传递和流媒体平台,具有低延迟、高性能和高可靠性、万亿级别的容量和灵活的可扩展性。5.在已创建的Java工程中,创建订阅普通消息程序并运行。原创 2023-02-10 10:05:07 · 410 阅读 · 0 评论 -
RocketMQ源码解析之消息存储机制
具体来说,RocketMQ将消息存储在commitlog文件中,commitlog是一个由固定大小的多条消息组成的文件,每条消息由一个物理位置和一个对应的消息长度组成。通过以上的分析,我们可以了解到RocketMQ的消息存储机制主要是指将消息以文件的形式存储在commitlog中,并通过ConsumeQueue来存储消息的物理偏移量。RocketMQ在消息存储时使用的是异步刷盘的方式,其具体实现是通过Flusher(刷盘器)和CommitLog(存储消息的文件)两个类来实现的。2. 消息的存储流程。原创 2023-06-13 16:08:11 · 1558 阅读 · 0 评论 -
RocketMQ源码解析:从生产者到消费者的消息流程
消费者通过注册消息监听器来处理消息,当消费者从Broker拉取到消息后,消息监听器会将消息交给消费者进行处理。当生产者发送消息时,会将消息的Topic、Tag等信息发送到NameServer,NameServer会根据路由信息将消息发送到对应的Broker,从而保证消息能够正确发送到目标消费者。当消费者从Broker拉取到消息后,会先进行消息过滤,去掉与消费者订阅条件不匹配的消息。在DefaultMQProducer实例初始化时,会启动一个发送消息线程,并定时检查发送消息队列中是否有消息需要发送。原创 2023-06-12 21:48:35 · 333 阅读 · 0 评论 -
深入剖析RocketMQ源码:消息传递的奥秘
消息传递的奥秘涉及的核心代码包括消息队列的持久化、消息发送、消息消费等。消息发送和消息消费则涉及到发送器和消费者的实现。在消费消息的过程中,RocketMQ还提供了消息重试、顺序消费、批量消费、并发消费等丰富的特性,可以为开发者提供更为灵活和方便的开发方式。在RocketMQ中,消息以消息队列(MQ)的形式存储,消费者从消息队列中获取消息。总的来说,RocketMQ的消息传递奥秘涉及到RocketMQ的核心组件和特性,对于了解RocketMQ的底层实现原理和开发者们来说,是必不可少的。原创 2023-06-12 21:42:15 · 1232 阅读 · 0 评论 -
RocketMQ之底层IndexFile存储协议
在定期清理时,RocketMQ会根据checkpoint文件中记录的时间戳和当前时间戳计算出需要清理的时间段,然后查找对应的IndexFile,并在文件中进行索引信息的删除和文件的缩小操作,同时更新checkpoint文件中的记录。需要注意的是,索引信息中的时间戳仅记录了消息被存储的时间,并不是消息发送的时间,这是为了提高消息检索的效率而做出的优化。一致性问题:RocketMQ中的索引信息与消息数据是分开存储的,因此在存储出现问题时可能会导致索引信息和消息数据不一致的情况。原创 2023-05-16 22:36:24 · 405 阅读 · 0 评论 -
Rocketmq源码分析之消息消费(五)
以上是RocketMQ消息消费的源码分析,总体流程为消费者订阅消息、从消息队列拉取消息、将消息处理器封装成ConsumeConcurrentlyService对象,并加入ConsumeMessageService对象维护的ConcurrentMap中,然后对多个消息进行循环处理,调用消息处理器的consumeMessage()方法进行消息消费,最后进行消费进度的提交。当消息队列中有消息需要被消费时,会触发Consumer对象的消息处理器进行消息消费。本文以推模式为例进行源码分析。原创 2023-05-08 20:37:47 · 500 阅读 · 0 评论 -
Rocketmq 源码分析之发送消息
在具体的实现过程中,RocketMQ并不直接将消息发送给一个指定的 Broker 节点,而是采用 Broker 的路由机制,通过 NameServer 自动获取到目标 Broker 上存储 Topic 相应的消息队列,在将消息发送到队列中。例如,消息的选择、创建、序列化等过程。3. 查找 Broker 端所在服务(根据 Topic 进行查找),然后从 Broker 端中获取到 Topic 所分配的消息队列(Message Queue)列表,并根据消息发送的策略,选择正确的消息队列进行消息发送。原创 2023-05-07 16:15:48 · 545 阅读 · 0 评论 -
RocketMQ(二) 领域名词
今天这一篇主要说一下RocketMQ涉及到的专业名词,方便后续文章的说明。一、主题(Topic)Apache RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。主题通过TopicName来做唯一标识和区分。原创 2023-02-10 10:43:33 · 412 阅读 · 0 评论 -
Rockmq高级特性解读(二)
在RockMQ中,一个Broker可以有多个Master和Slave节点,Master节点负责写入消息,Slave节点负责读取消息,并将数据异步复制到其他Slave节点。它具有许多优秀的特性和功能,比如持久化存储,高可用性,以及良好的扩展性等等。RockMQ支持一种集群消费机制,消费者可以组成一个消费者组,在一个组中只有一个消费者能够接收到消息,从而确保消息的负载均衡和高可用性。RockMQ支持一种高可用性机制,通过部署多个节点,实现主从节点之间的数据同步和自动切换,从而确保消息队列的高可用性。原创 2023-05-07 10:55:23 · 498 阅读 · 0 评论 -
聊聊RocketMQ 的功能特性
这是RocketMQ的第三篇文章,前两篇文章我们说了一下rocketmq的入门安装和开发配置,以及他的一些名词解释,。今天我们来说说的他的一些功能特性。明确区分这些功能特性,方便大家在开发的时候进行使用。例如下面要说的延迟消息的应用场景、事务消息的应用场景,这些关键特性特别是在电商领域等关键场景中有一些使用场景。好了,下面开始介绍。原创 2023-02-18 15:29:15 · 756 阅读 · 0 评论