RocketMQ broker停写功能源码分析

文章详细解析了在RocketMQ中如何平滑升级Broker时的无损停写操作,主要通过MQAdmin工具来调用DefaultMQAdminExt的wipeWritePermOfBroker方法。源码分析展示了客户端、NameServer如何处理停写请求,以及消费者如何更新Topic路由信息。尽管NameServer不会直接更新Broker的配置,但消费者会定时拉取最新路由,确保最终一致性。
摘要由CSDN通过智能技术生成

背景

在我们要平滑升级broker的时候,无损升级的最佳实践应该是

  1. 新broker启动
  2. 旧broker停写
  3. 旧broker消息消费完成后下线(包括延时消息)

所以我们本次就是来分析如何完成broker的停写

源码入口

其实通过查看源码,我们发现有两种方式可以停写broker

  1. 通过mqadmin运维工具命令行的方式

 

2.通过MQAdminExt管理工具类

 

两种方式没有区别,都是调用DefaultMQAdminExt的wipeWritePermOfBroker方法

 

源码分析

client

我们这里直接进去到最底层的实现类代码

java复制代码public int wipeWritePermOfBroker(final String namesrvAddr, String brokerName,
        final long timeoutMillis) throws RemotingCommandException,
        RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, InterruptedException, MQClientException {
        WipeWritePermOfBrokerRequestHeader requestHeader = new WipeWritePermOfBr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值