RocketMQ是阿里巴巴开源的一个分布式消息和流数据平台,已经捐赠给Apache基金会。从背景来看,RocketMQ不仅久经阿里双十一的考验,而且能从Apache基金会顺利毕业,都能证明其性能、稳定性和代码质量的优异。而且,笔者参加过一次RocketMQ社区组织的开发者会议,社区氛围很好,而且能够和开发者直接交流,也不存在语言障碍。一个好的社区氛围能让我们在遇到问题以后,更轻松地解决问题。此外,RocketMQ涉及分布式系统的通信和高性能存储,通信和存储是很多系统都会涉及到的内容,因此非常值得学习。
rocketmq-remoting是RocketMQ中实现通信的组件,基于Netty封装,具有很好的通用性,可以在很多分布式系统中使用。而且,从pom文件可以看出remoting模块只依赖了netty和fastjson(日志模块暂不关注),所以不用担心这个模块的代码会与其他模块代码发生交互,盘根错节在一起,难以理清头绪。
今天的目的是能使用remoting模块实现测试环境,方便对代码进行debug。
首先来了解NettyRemotingServer和NettyRemotingClient的使用。
从NamesrvController中可以看到NettyRemotingServer的启动流程,这里对其进行了简化,只保留了必要的部分。
@Slf4j
public class TestController {
private RemotingServer remotingServer;
private BrokerHousekeepingService brokerHousekeepingService;
private NettyServerConfig nettyServerConfig;
privat