发送消息的流程
- Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面
- kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费
- Consumer从kafka集群pull数据,并控制获取消息的offset
1 同步发送模式源码
2 异步发送模式源码流程
3 总结
3.1 同步发送模式特点
- 同步的向服务器发送RPC请求进行生产
- 发送错误可以重试
- 可以向客户端发送ack
3.2 异步发送模式特点
- 最终也是通过向服务器发送RPC请求完成的(和同步发送模式一样)
- 异步发送模式先将一定量消息放入队列中,待达到一-定数量后再一起发送;
- 异步发送模式不支持发送ack,但是Client可以调用回调函数获取发送结果
所以,性能比较高的场景使用异步发送,准确性要求高的场景使用同步发送。