每天进步一点点

2020-05-30【Kafka生产者】

2020-05-30  本文已影响0人  桢桢claire
彩色的喀纳斯

今日鸡汤

许多人对信息的接收,其实本质上不过是在「找认同」罢了。

这句话深有感触。

好了,今天接着看《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 - 生产者发送的请求大小。

上一篇下一篇

猜你喜欢

热点阅读