生产者的生命周期是怎样的?
- 配置生产者客户端参数并创建相应实例
- 构建待发送的消息
- 发送消息
- 关闭消费者实例
生产者做了些什么?
- 将消息和消息相关信息封入ProducerRecord
- 通过拦截器对消息进行过滤或修改
- 使用序列化器将对象换成字节数组(broker只接收字节数组)
- 使用分区器指定消息对应消息分区
- 用三种方式发送消息,同步、异步、发后即忘
生产者的可配置的地方有哪些?
- 初始化配置:
broker的ip端口清单,指定消息key和value序列化器
拦截器、序列化器、分区器都可以替换,但是生产者和消费者的序列化器和反序列化器要适配。 - acks:
决定消息的可靠性 - max.request.size:
- 限制生产者客户端能发送消息最大值。
- 消息发送失败重试次数和重试间隔
- 闲置连接的关闭时间
- linger.ms:
决定ProducerBatch发送的时间间隔,提高它坏处是增加消息延迟,好处是会提升一定的吞吐量。
生产者线程模型是什么样的?
由一个主线程和发送者线程构成