rocketmq
chengbinbbs
这个作者很懒,什么都没留下…
展开
-
【RocketMQ源码分析】重试机制
我们知道RocketMQ消息处理成功的标志是消费者消费一条消息后向Broker端发送ACK消息(ack,message back)并且被Broker处理。这个过程中是涉及到网络传输,有网络的地方就存在不确定性,如果由于网络等原因导致ACK丢失,则RocketMQ会触发消息消费重试机制,重新消费该条消息。RocketMQ支持了生产端和消费端两类重试机制。 生产端重试 如果由于网络抖动等原因,Pr...原创 2019-10-18 14:47:43 · 482 阅读 · 0 评论 -
【RocketMQ源码分析】消息幂等
幂等问题 我们知道RocketMQ消息处理成功的标志是消费者消费一条消息后向Broker端发送ACK消息(ack,message back)并且被Broker处理。这个过程中是涉及到网络传输,有网络的地方就存在不确定性,如果由于网络等原因导致ACK丢失,则RocketMQ会触发消息消费重试机制,重新消费该条消息。这里就涉及到了消息幂等的概念。 幂等场景 RocketMQ基于发布、订阅模型,客户端生...原创 2019-10-17 18:38:40 · 338 阅读 · 0 评论 -
RocketMQ事务消息实战
我们以一个订单流转流程来举例,例如订单子系统创建订单,需要将订单数据下发到其他子系统(与第三方系统对接)这个场景,我们通常会将两个系统进行解耦,不直接使用服务调用的方式进行交互。其业务实现步骤通常为: 1、A系统创建订单并入库。 2、发送消息到MQ。 3、MQ消费者消费消息,发送远程RPC服务调用,完成订单数据的同步。 1、方案一 @Service public class...转载 2019-10-16 17:07:45 · 1108 阅读 · 0 评论 -
【RocketMQ源码分析】事务消息
随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题。分布式事务目前主要的解决方案是:消息最终一致性、TCC等柔性事务的分布式事务方案,本文主要分析的是基于消息的最终一致性方案。 解决问题 拿下单送积分来说,生成订单记录 -> MQ -> 增加积分。 我们...原创 2019-10-16 16:25:25 · 131 阅读 · 0 评论 -
【RocketMQ源码分析】broker
Broker即是物理上的概念,也是逻辑上的概念。多个物理Broker通过IP:PORT区分,多个逻辑Broker通过BrokerName区分。 多个逻辑Broker组成Cluster。 Broker与Topic是多对多的关系。 Broker自身包含一个使用10911端口的NettyServer、一个10909的NettyServer,以及一个NettyClient。 HA通过10912端口提供服...原创 2019-10-15 16:54:51 · 262 阅读 · 0 评论 -
【RocketMQ源码分析】生产者
简单使用 public class SyncProducer { public static void main(String[] args) throws Exception { //使用ProducerGroup初始化Producer DefaultMQProducer producer = new DefaultMQProduc...原创 2019-10-15 16:47:43 · 252 阅读 · 0 评论 -
【RocketMQ源码分析】消费者
基本使用 首先看看consumer的简单使用: public class Consumer { public static void main(String[] args) throws InterruptedException, MQClientException { // 使用consumer group初始化DefaultMQPushConsumer ...原创 2019-10-14 19:00:28 · 196 阅读 · 0 评论 -
【RocketMQ源码分析】Namesrv
一、下载源码 从github拉取rocketmq代码:https://github.com/apache/rocketmq.git,当前最新的版本是4.5.2.我用的是ideal,可以看到rocketmq源码结构如下: rocketmq共包含9个模块,解释一下各个模块的功能和作用: rocketmq-common:通用的枚举、基类方法、或者数据结构,包名有admin、consumer、filt...原创 2019-10-12 17:05:38 · 350 阅读 · 0 评论 -
【RocketMQ源码分析】系统架构
如上图所示: rocketmq整体架构分为四个核心部分:分别是:NameServer、Broker、Producer,Consumer。 NameServer 官方解释:是一个几乎无状态节点,可集群部署,在消息队列 MQ 中提供命名服务,更新和发现 Broker 服务。 简单的理解:NameServer相当于配置中心,维护Broker集群、Broker信息、Broker存活信息、主题与队列信息...原创 2019-10-12 15:47:25 · 238 阅读 · 0 评论