基于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