首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RocketMQ(二):producer客户端实践

MQ解耦了生产者和消费者,前提是有一个稳定强大的消息服务,我们只管与之通信即可。

所以,和MqServer通信是什么样的?难否?

0. 发送端demo

只需要设置下 nameServer, 就可以实现发送mq消息了。简单易用,是好产品的必备特征。

具体实现过程,且让我们深入一点了解。

1:消息发送主流程

网络请求通信细节,视情况查看。

2. 更新发送路由信息

从nameserver获取原始信息,然后缓存到本地。可以保证拿到准确数据的同时,保证了高性能。

3. 选择一个队列,客户端负载均衡

基本就是一个轮询策略了。

4. 查找 broker

在一组 broker 主从中,只选择主节点进行发送消息。

总结一下发送过程:

1. 数据检验,topic格式,消息体大小等;

2. 查找queueId, 使用一定的负载均衡测试;

3. 查找 broker, 发送消息;

4. 等待响应或者重试;

5. 所有topic,route信息都可以namesrv获取;

5. producer 的启动环境准备

以上的过程式,是进行发发送消息的过程,最终都是基于 netty 创建的通道进行传送的,那么这些通道都是什么时候准备好的呢?其实是 producer.start();

MQClientManager 是个重要的类,它包含了客户端和nameserver,broker连接的建立,维护线程的创建等等。

启动时主要完成的任务有:准备好网络连接的环境基于netty, 创建生产者消费者线程池,开启各后台任务异步线程。然后可以准备发送消息。

以上,这可能是水军。自己领悟才是硬道理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210126A0G5GC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券