消费流程
摘要:拉取消息:PullMessageService MQClientInstance#start方法,会启动消息拉取服务:PullMessageService,PullMessageService是ServiceThread的子类,启动该服务时会创建一个新的线程 public void run() {
阅读全文
posted @
2022-05-17 10:39
溪水静幽
阅读(60)
推荐(0) 编辑
consumer启动流程
摘要:构造方法:DefaultMQPushConsumer consumer的处理类为DefaultMQPushConsumer public DefaultMQPushConsumer(final String namespace, final String consumerGroup, RPCHook
阅读全文
posted @
2022-05-16 11:35
溪水静幽
阅读(148)
推荐(0) 编辑
消息存储
摘要:RocketMQ消息存储整体架构 RocketMQ采用的是混合型的存储结构,为Broker单个实例下所有的队列共用一个日志数据文件(即为CommitLog)来存储。而Kafka采用的是独立型的存储结构,每个队列一个文件。 RocketMQ的混合型存储结构针对Producer和Consumer分别采用
阅读全文
posted @
2022-05-15 11:09
溪水静幽
阅读(164)
推荐(0) 编辑
消息发送流程
摘要:DefaultMQProducer#send(...):发送消息 public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException, InterruptedExcept
阅读全文
posted @
2022-05-14 18:24
溪水静幽
阅读(566)
推荐(0) 编辑
Producer启动流程
摘要:DefaultMQProducer构造方法 public DefaultMQProducer(final String producerGroup) { this(null, producerGroup, null); } public DefaultMQProducer(final String
阅读全文
posted @
2022-05-12 11:56
溪水静幽
阅读(260)
推荐(0) 编辑
路由管理
摘要:NameServer需要为生产者和消费者提供关于Topic的路由信息,还得管理集群中的所有Broker节点,包括时刻监控Broker的存活状态、接收Broker的注册信息,而这些路由的基础信息,在RouteInfoManager这个类中。 元信息 RouteInfoManager是路由信息的管理类
阅读全文
posted @
2022-05-10 11:54
溪水静幽
阅读(138)
推荐(0) 编辑
NameServer启动流程
摘要:NameServer是一个提供轻量级服务发现和路由的服务器,主要功能 代理管理,NameServer从Broker集群接受注册,提供心跳机制来检查Broker是否活动。 路由管理,每个名称服务器将保存关于Broker集群的整个路由信息和用于客户机查询的队列信息。 作为RocketMQ的注册中心,Na
阅读全文
posted @
2022-05-09 11:39
溪水静幽
阅读(140)
推荐(0) 编辑
负载均衡
摘要:RocketMQ 负载均衡在 Client 端完成,分为 Producer 端发送消息时的负载均衡和 Consumer 端订阅消息的负载均衡。 Producer 的负载均衡 Producer 端在发送消息时,先根据 Topic 找到指定的 TopicPublishInfo,获取了 TopicPubl
阅读全文
posted @
2022-05-07 23:06
溪水静幽
阅读(82)
推荐(0) 编辑
高可用机制
摘要:分布式集群 RocketMQ分布式集群是通过Master和Slave的配合达到高可用性的。Master和Slave的区别:在Broker的配置文件中,参数brokerId的值为0表明这个Broker是Master,大于0表明这个Broker是Slave,同时brokerRole参数也会说明这个Bro
阅读全文
posted @
2022-05-06 14:58
溪水静幽
阅读(113)
推荐(0) 编辑
底层存储
摘要:RocketMQ 存储的文件主要包括 Commitlog 文件、ConsumeQueue 文件、Index 文件。 RocketMQ 将所有主题的消息存储在同一个文件中,确保消息发送时按顺序写文件,尽最大能力确保消息发送的高可用性与高吞吐量。 消息中间件一般都是基于主题的订阅与发布模式,消息消费时必
阅读全文
posted @
2022-05-04 11:24
溪水静幽
阅读(70)
推荐(0) 编辑
下单与支付最终一致性
摘要:下单场景 1. 用户请求订单系统下单 2. 订单系统通过RPC调用订单服务下单 3. 订单服务调用优惠券服务,扣减优惠券 4. 订单服务调用调用库存服务,校验并扣减库存 5. 订单服务调用用户服务,扣减用户余额 6. 订单服务完成确认订单 问题 户提交订单后,扣减库存成功、扣减优惠券成功、使用余额成
阅读全文
posted @
2022-04-26 11:19
溪水静幽
阅读(1064)
推荐(0) 编辑
广播消息、批量消息
摘要:广播消息就是向所有用户发送消息。 如果我们希望所有订阅者都能收到有关某个主题的消息,可以使用广播消息。 举个例子 生产者发送10条消息,有2个订阅者,则这两个订阅者会分别收到10条消息, 而与广播模式相对应的集群模式这是 2个订阅者一共收到10条消息。 Rocketmq 消费者默认是集群的方式消费的
阅读全文
posted @
2021-04-21 23:13
溪水静幽
阅读(175)
推荐(0) 编辑
顺序消息ordermessage
摘要:消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序。 原理 在默认的情况下消息发送会采取Round Robin轮询方式把消息发送到不同的queue(分区队列); 而消费消息的时候从多个queue上拉取消息,这种情况发送和消费是
阅读全文
posted @
2021-04-19 23:09
溪水静幽
阅读(177)
推荐(0) 编辑
Rocketmq存储结构
摘要:右侧的部署模式 ,双机互为主备 发送消息的步骤 1) 设置 Producer 的 GroupName(Producer Group是一类 Producer 的集合); 2) 设置 InstanceName,当一个 JVM 需要启动多个 Producer 时,需要指定不同的 InstanceName
阅读全文
posted @
2021-04-14 23:41
溪水静幽
阅读(320)
推荐(0) 编辑
Rocketmq架构
摘要:RocketMQ的架构 整体由4部分组成 namesrv broker producer consumer namesrv 当broker服务启动后,会向namesrv注册信息,比如broker中的主题、消费偏移量、队列、ip、端口等,由broker的心跳发送到namesrv。 broker clu
阅读全文
posted @
2021-04-08 23:35
溪水静幽
阅读(407)
推荐(0) 编辑
Rocketmq基本概念
摘要:消息模型 RocketMQ主要由Producer、Broker、Consumer 三部分组成,Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息 消息生产者(producer) 负责生产消息,由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发
阅读全文
posted @
2021-04-07 23:27
溪水静幽
阅读(139)
推荐(0) 编辑
Rocketmq环境配置
摘要:修改配置文件 broker.conf 位于$ROCKETMQ_HOME/conf目录下 ,启动的时候可以通过-c参数加载该配置文件 #集群名称,可自定义 brokerClusterName=DefaultCluster brokerName=broker‐a brokerId=0 #rocketmq
阅读全文
posted @
2021-01-10 19:18
溪水静幽
阅读(4)
推荐(0) 编辑