RocketMQ源码 Namesrv-BrokerHousekeepingService网络通信管理组件

前言


RocketMQ在启动 Namesrv 的过程中会初始化 NamesrvController 核心组件,NamesrvController初始化过程中 又引用了 FileWatchService 文件变更监听服务组件,它本身实现ChannelEventListener接口,负责监听Netty通信服务器产生的变更事件。

源码版本:4.9.3

RocketMQ入门请查阅我的另一篇笔记 RocketMQ入门与最佳实践-CSDN博客

接口核心数据行为

它的处理逻辑比较少,但是也比较重要,负责监听了网络连接事件、网络关闭事件、网络异常事件,网络空闲事件,并维护对应broker的路由信息。 路由信息组件内部逻辑请查阅我的另一篇笔记。RocketMQ源码 Namesrv-RouteInfoManager路由管理组件-CSDN博客


public class BrokerHousekeepingService implements ChannelEventListener {
    private static final InternalLogger log = InternalLoggerFactory.getLogger(LoggerName.NAMESRV_LOGGER_NAME);
    private final NamesrvController namesrvController;

    public BrokerHousekeepingService(NamesrvController namesrvController) {
        this.namesrvController = namesrvController;
    }

    /**
     * channel 连接事件
     * @param remoteAddr
     * @param channel
     */
    @Override
    public void onChannelConnect(String remoteAddr, Channel channel) {
    }

    /**
     * channel 关闭事件,关闭时需要将broker从路由信息中删除
     * @param remoteAddr
     * @param channel
     */
    @Override
    public void onChannelClose(String remoteAddr, Channel channel) {
        this.namesrvController.getRouteInfoManager().onChannelDestroy(remoteAddr, channel);
    }

    /**
     * channel 异常事件,关闭时需要将broker从路由信息中删除
     * @param remoteAddr
     * @param channel
     */
    @Override
    public void onChannelException(String remoteAddr, Channel channel) {
        this.namesrvController.getRouteInfoManager().onChannelDestroy(remoteAddr, channel);
    }

    /**
     * channel 空闲事件,关闭时需要将broker从路由信息中删除
     * @param remoteAddr
     * @param channel
     */
    @Override
    public void onChannelIdle(String remoteAddr, Channel channel) {
        this.namesrvController.getRouteInfoManager().onChannelDestroy(remoteAddr, channel);
    }
}



 

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值