当前位置: 首页 > 网络应用技术

RocketMQ源代码分析6:生产者启动过程

时间:2023-03-06 16:21:21 网络应用技术

  基于RocketMQ的RocketMQ-4.9.0版本分析,我们之前分析了启动过程,然后我们可以看到客户端的消息生产者如何启动。

  首先查看客户端发送的代码:

  生产者对象可以配置许多参数。我在此处使用默认参数值。如果您想尝试其他参数设置,则可以参考官方文档

  从代码不难看到生产者只需要三个步骤:,然后我们将根据这三个步骤逐步分析其工作原理。

  实际上,此课程是外观课。让我们看一下其构造方法:

  因此,它主要创建一个对象,因此让我们看一下其构造函数方法:

  就个人而言,我认为这个名字不是真的。乍一看,这似乎是界面和实现类之间的关系,但事实并非如此。

  }

  核心是调用启动客户端的方法:

  还有更多内容,我会添加一些评论

  }

  客户实例是类,生产者和消费者作为客户,因此它保留了与生产者和消费者有关的所有信息。稍后,当我们分析消费者启动时,我们还将看到基于此类创建消费者实例。但是我们是生产者,因此可以忽略与消费者相关的内容。

  它是将生产者信息注册到对象中的表

  }

  首先,这里有一个印象,主题=“ tbw102”放置,稍后分析消息时,您会看到它。

  }

  当创建客户端的实例对象时,将在内部创建对象,并将创建其内部创建Netty客户对象。

  我们查看的发布逻辑:

  您感到熟悉吗?没错,当启动经纪人,Netty客户端(因为经纪人是名称服务器的客户端),同一类,同一公式;所以我不会在这里详细介绍。您可以看到经纪人开始启动Netty客户端文章

  2.5.2启动各种定时任务。在分析经纪人开始之前,经纪人将定期向名称服务器发起心跳。所以现在,产品如何向经纪人发送心跳?

  为了解释,消费者通过这种方法发送心跳。如果是生产者,则准备制作人的心跳数据。如果是消费者,则准备消费者的心跳数据。

  2.6.1准备心跳数据包。让我们看一下心跳数据的结构:

  准备生产者心跳数据:

  2.6.2在步骤2.5.2中获取经纪人地址,并将启动许多定时任务,其中:

  它将将经纪人信息,主题路由信息等提取到本地地图。向经纪人提供心跳,并将使用经纪人的地址。

  2.6.3向经纪人发送心跳

  在这里,我们再次回到经纪人。如果您熟悉经纪人,则可以阅读经纪人发布文章。

  我们知道,当经纪人开始时,许多处理器将注册以处理客户请求,并根据代码区分不同的业务方案。

  因此,我们查看处理器的逻辑:

  我们正在继续看心跳逻辑:

  注册生产者信息:

  将生产者信息放在对象的属性中,心跳结束。

  在这一点上,生产者启动过程已经结束。

  本文讲述了生产者是如何从源代码的角度开始的,并简单地总结了:

  仅限于作者的个人层面,文章中有不可避免的事情,欢迎纠正!不要喷洒,谢谢

  原始:https://juejin.cn/post/7098650620973809671