1. 简介 
 Producer发送一条消息到broker后,如何存储到commitlog文件,又是如何构建的consumequeue,index文件,将从源码的角度剖析。 
2. SendMessageProcessor 
 该类是负责响应Producer发消息到broker的入口处理逻辑类。其processRequest响应两种请求: 
[list]            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-27 12:19:58
                            
                                64阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            消息队列有两种消息模型,分别是队列模型和发布/订阅模型。队列模型队列模型是最开始的一种消息队列模型,对应着消息队列“发-存-收”的模型。生产者往某个队列里面发送消息,一个队列可以存储多个生产者的消息,一个队列也可以有多个消费者,但是消费者之间是竞争关系,也就是说每条消息只能被一个消费者消费。发布/订阅模型如果需要将一份消息数据分发给多个消费者,并且每个消费者都要求收到全量的消息。很显然,队列模型无            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-26 13:08:30
                            
                                76阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录一、顺序消息二、顺序消息消费过程1、消息队列负载2、消息拉取3、消息消费4、消息进度存储三、总结 一、顺序消息  RocketMq在同一个队列中可以保证消息被顺序消费,所以如果要做到消息顺序消费,可以将消费主题(topic)设置成一个队列。二、顺序消息消费过程  同普通消息一样,顺序消息消费需要经历4个步骤:消息队列负载、消息拉取、消息消费、消息进度存储。1、消息队列负载  消息队列负载            
                
         
            
            
            
             前言分布式消息选型的时候是否支持事务消息是一个很重要的考量点,而目前只有RocketMQ对事务消息支持的最好。今天我们来唠唠如何实现RocketMQ的事务消息!Apache RocketMQ在4.3.0版中已经支持分布式事务消息,这里RocketMQ采用了2PC的思想来实现了提交事务消息,同时增加一个补偿逻辑来处理二阶段超时或者失败的消息,如下图所示。RocketMQ事务流程概要Roc            
                
         
            
            
            
            基于RocketMQ release-4.9.3,深入的介绍了Broker接收消息源码入口。此前我们学习了RocketMQ的Producer发送消息的源码,首先会查找查找topic的发布信息,然后找到一个消息队列MessageQueue,默认是轮询的选择,MessageQueue中存储着对应的brokerName,通过brokerName就能找到具体的brokerIP,随后获取producer客户            
                
         
            
            
            
            rocketMQ版本:4.5.2本次只是简单从rocketmq example里quickstart的producer例子进入,了解下消息发送的一个简单流程,一些比较复杂的流程会在后续学习中继续以新文章记录。 首先,从例子中可以看到要先启动producer。进入start方法,查看相应的启动流程。----- DefaultMQProducerImpl start继续进入DefaultMQProdu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-14 09:33:43
                            
                                112阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            上篇博客介绍过Producer的启动,这里涉及到相关内容就不再累赘了 【RocketMQ中Producer的启动源码分析】 Producer发送消息,首先需要生成Message实例:1 public class Message implements Serializable {
 2     private static final long serialVersionUID = 844            
                
         
            
            
            
            RocketMQUtilprivate static Message getAndWrapMessage(String destination, MessageHeaders headers, byte[] payloads) {	if (destination == null || destination.length() < 1) {		return null;	}	if (payloads == null || payloads.length < 1) {		return nu            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2021-11-11 10:32:41
                            
                                422阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RocketMQUtilprivate static Message getAndWrapMessage(String destination, MessageHeaders headers, byte[] payloads) {	if (destination == null || destination.length() < 1) {		return null;	}	if (payloads == null || payloads.length < 1) {		return nu            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-01-12 15:11:41
                            
                                287阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1 概述将发送消息的过程逻辑分为三层:应用层,传输层,网络层
client/DefaultMQProducer/DefaultMQProducerImpl:这三者中的逻辑属于应用层的处理逻辑,主要逻辑就是处理消息本身相关的事情
MQClientAPIImpl:此类中的逻辑归属于传输层,应用层与网络层之间的桥梁,主要的逻辑是将应用层的结果封装为网络层协议RemotingCommand以及消息头Hea            
                
         
            
            
            
                 在手机上相信都有来自服务器的推送消息,比如一些及时的新闻信息,这篇文章主要就是实现这个功能,只演示一个基本的案例。使用的是websocket技术。一.什么是websocketWebSocket协议是基于TCP的一种新的网络协议。它实现了客户端与服务器全双工通信,学过计算机网络都知道,既然是全双工,就说明了服务器可以主动发送信息给客户端。这与我们的推            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-23 20:00:53
                            
                                140阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            RocketMQ发送的消息有两种,一种是事务消息,一种是普通消息。  事务消息:在消息发送过程中,需要进行回调,二次确认,这里面用来确认的消息就是事务消息。  普通消息:Producer产生业务消息,让消费者处理的实际业务消息就是普通消息。消息发送与接收整体流程图Producer发送消息局部时序图 Producer发送过程整体说明:首先调用上层的DefaultMQProdicer.send(Mes            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-20 10:08:48
                            
                                324阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、为什么会出现消息乱序消费先来看生产者,rocketmq的一个主题下可以创建多个队列,默认情况下生产者将消息轮询发送到各个不同的队列上,这就导致本来需要有序的多个消息进入了不同队列。 下面再来看一下消费者。如果消费者使用的是DefaultMQPushConsumer,下面分两种情况来看: (1)、一种该消费组内只有一个消费者,所有的消息都会发送到该消费者,DefaultMQPushConsume            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-01 09:50:42
                            
                                126阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            https://github.com/apache/rocketmq/tree/master/docs/cn一基本概念 1.1.1.RocketMQ有三部分组成:produce,broker,consumer	1.1.2.RocketMQ多种发送方式,同步发送、异步发送、顺序发送、单向发送。同异步需要返回确认信息	1.1.3.两种消费形式:拉取式消费(主动性)、推动式消费(实时性)。	1.1.4.            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-25 10:22:00
                            
                                255阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RocketMQ - 消息收发3.0) 消息发送与接收开发流程谁来发?发给谁?怎么发?发什么?发的结果是什么?打扫战场3.1) 基于Java环境构建消息发送与消息接收基础程序3.1.1) 单生产者单消费者(OneToOne)生产者步骤1:导入坐标<dependencies>
        <dependency>
            <groupId>or            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-19 17:16:32
                            
                                164阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、普通消息1 消息发送分类 Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。同步发送消息 同步发送消息是指,Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高,但消息发送效率太低。异步发送消息 异步发送消息是指,Producer发出消息后无需等待MQ返回ACK,直接发送下⼀条消息。该方式的消息可靠性可以得到保障,消息            
                
         
            
            
            
            一、技术架构  RocketMq技术架构上主要分为4个部分:NameServer,Producer,Consumer,BrokerServer。NameServer:Topic路由注册中心。主要包括两个功能:1)broker管理,支持broker动态注册与发现,心跳检测broker存活情况。2)路由信息管理,保存broker、队列信息Producer:消息发布角色Consumer:消息消费角色Br            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-03 15:49:34
                            
                                179阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Topic消息主题,一级消息类型,通过 Topic 对消息进行分类。详情请见Topic 与 Tag 最佳实践。Message消息,消息队列中信息传递的载体。Message ID消息的全局唯一标识,由消息队列 RocketMQ 系统自动生成,唯一标识某条消息。Message Key消息的业务标识,由消息生产者(Producer)设置,唯一标识某个业务逻辑。Tag消息标签,二级消息类型,用来进一步区分            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-28 00:52:16
                            
                                105阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            RocketMQ中的专业术语Topic topic表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息、物流消息…… 一条消息必须有一个Topic。Tag Tag表示消息的第二级类型,比如交易消息又可以分为:交易创建消息,交易完成消息….. 一条消息可以没有Tag。RocketMQ提供2级消息分类,方便大家灵活控制。Queue 一个topic下,我们可以设置多个queue(消息队列)。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-25 15:30:25
                            
                                138阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在上篇中,了解RocketMQ的基本概念,以及安装好RocketMQ,启动后。进行代码实际操作练习本篇主要练习三种发送方式一、基础项目创建需要创建两个项目,来表示消费者和生产者创建两个SpringBoot项目,并导入maven和配置好application.yamlmaven需要导入rocketmq-common、rocketmq-client、fastjson<dependencies&g            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-14 06:46:40
                            
                                2005阅读
                            
                                                                             
                 
                
                                
                    