今日鸡汤
许多人对信息的接收,其实本质上不过是在「找认同」罢了。
这句话深有感触。
好了,今天接着看《Kafka权威指南》,了解Kafka生产者。
Kafka生产者是如何发送消息的?
Kafka生产者组件总的来说,分为几步:
第一步,创建ProducerRecord对象。它包含目标主题(Topic)和要发送的内容(Value)。
第二步,序列化。生产者需要把键和值对象序列化成字节数组,以便他们在网络上传输。
第三步,数据传输给分区器。根据ProducerRecord指定的分区(Partition)或根据键值选择一个分区。
第四步,添加记录到记录批次里。
第五步,将记录批次发送到相应的broker。
Producer对象需要设置的属性有哪些?
3个必选属性。
1)bootstrap.server,指定broker地址(host:port)
2)key.serializer,设置为一个实现Serizalizer接口的类,来序列化消息的键。
3)value.serializer,设置为一个实现Serizalizer接口的类,来序列化消息的值。
发送消息的方式有哪几种?
三种。
1)发送并忘记(fire-and-forget):消息发给服务器,单并不关心是不是正常到达。
2)同步发送:使用send()方法发送消息,返回一个Future对象,调用get()进行等待。如果服务器返回错误(可重试错误或非可重试错误),会抛异常,否则,会得到一个RecordMetadata对象
3)异步发送:调用send()方法并指定一个回调函数。
生产者有哪些重要配置参数?
1. acks(0|1|all) - 必须要有多少个分区收到消息,生产者才认为消息写入是成功的。
2. buffer.memory - 设置生产者内存缓冲区大小。
3.compression.type(snappy|gzip|lz4) - 指定消息发送给broker前用哪种算法压缩。
4. retires - 生产者可以重发消息的次数。
5. batch.size - 指定一个批次可以使用的内存大小(字节数计算)。
6. max.in.flight.requests.per.connection - 生产者在收到服务器响应前可以发送多少消息。
7. max.request.size - 生产者发送的请求大小。
网友评论