天天看点

一文看懂RocketMQ生产者发送消息源码解析(上)从UT看Producer API

基于最新的release-4.7.1代码分析。

客户端是个单独模块

一文看懂RocketMQ生产者发送消息源码解析(上)从UT看Producer API

从UT看Producer API

阅读源码,不推荐从入口开始看到底,毕竟你太年轻,把握不住它的底。我们可以带着问题去研究源码:Producer是如何发消息的?

推荐从UT用例入手。通过这些小流程,debug查看关键流程即可。

RocketMQ客户端的Producer的所有测试用例都在DefaultMQProducerTest类,这就很方便我们快速了解Producer。

主要测试用例

一文看懂RocketMQ生产者发送消息源码解析(上)从UT看Producer API

Producer相关的UML图

一文看懂RocketMQ生产者发送消息源码解析(上)从UT看Producer API
  • 门面模式(Facade Pattern)

    给客户端提供了一个可以访问系统的接口,隐藏系统内部的复杂性。

接口MQProducer就是门面,客户端只要使用这个接口就可以访问Producer实现消息发送的相关功能,使用上不必再与其他复杂实现类打交道。

类DefaultMQProducer实现了接口MQProducer,方法实现大多没有业务逻辑,只是封装对其他实现类的方法调用,也可视为是门面。

Producer大部分业务逻辑实现都在类DefaultMQProducerImpl。

有时实现分散在很多内部类,不方便用接口来对外提供服务,就可仿照RocketMQ,使用门面模式隐藏内部实现,对外提供服务。

接口MQAdmin定义了一些元数据管理的方法,在消息发送过程会用到。

一文看懂RocketMQ生产者发送消息源码解析(上)从UT看Producer API

继续阅读