Kafka producer 发送过程

在客户端调用send方法时,需要先构造好ProducerRecord对象,其包含以下字段

  • 如果在发送时指定了partition,则消息将被保存到指定的tp分区队列,
  • 如果没有指定分区,将对key散列后来计算分区,相同key的消息将被写到同一个分区队列中,
  • 如果key是null,且使用默认的分区器,
    • 则分区器将用轮询的方法(Round Robin)将序列化后的消息均衡分布到不同的队列中
  • ef3ebf3a503352a1d80d63b0cca4297b6a6.jpg
  • sender线程从Accumulator中取出批量数据组成一个batch发送

如果想使用同步方式

  • 其实是通过异步方式间接实现
    • 因为异步方式返回的是一个future对象,
    • 在这对象上调用get方法,将被阻塞直到返回结果。

1222875-20190114154454571-331276401.png

下图详细描述了数据发送到accumulator及sender线程从accumulator取出并发送到broker的过程

1222875-20190114161216148-1858266468.png

 

https://www.cnblogs.com/benfly/p/10000034.html

 

 

 

转载于:https://my.oschina.net/u/3847203/blog/3096779

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值