Kafka

一、生产者

1.一个应用程序在很多情况下需要往kafka写入消息:

记录用户的活动(用于审计和分析)、记录度量指标、保存日志消息、记录智能家电的信息、与其他应用程序进行异步通讯、缓冲即将写入的数据库数据等。

2.kafka生产者组件图

我们从创建一个ProducerRecord对象开始,ProducerRecord需要包含目标主题和要发送的内容。我们还可以指定键或分区。在发送ProducerRecord时,要先把键和值对象序列化成字节数组,这样他们才能在网络上传输。

接下来,数据被传递给分区器。如果之前在ProducerRecord里指定了分区,那么分区器就不会再做任何事情,直接把指定的分区返回。否则,分区器会根据ProducerRecord的键来选择一个分区。选好分区以后,生产者就知道该往哪个主题和分区发送这条记录了。紧接着,这条记录被添加到一个记录批次里,这个批次里的所有消息会被发送到相同的主题和分区上。有一个独立的线程负责把这些记录批次发送到相应的broker上。

服务器在收到这些消息时,会返回一个响应。如果消息成功写入kafka,就返回一个RecordMetaData对象,它包含了主题和分区信息,以及记录在分区里的偏移量。如果写入失败则会返回一个错误。生产者在收到错误之后会尝试重新发送消息,几次之后如果还是失败,就会返回错误信息。

3.创建kafka生产者

kafka生产者创建时,有三个必选属性:

bootstrap.servers

该属性指定broker的地址清单,地址的格式为host:port。清单里不需要包含所有的broker地址,生产者会从给定的broker里查找到其它的broker信息。不过建议至少要提供两个broker的信息,一旦其中一个宕机,生产者仍然能够连接到集群上。

key.serializer、value.serializer

broker希望接收到消息的键和值都是字节数组。生产者接口允许使用参数化类型,因此可以把Java对象作为键和值发送给broker。这样的代码具有良好的可读性,不过生产者需要知道如何把Java对象转化成字节数组。key.serializer必须被设置为一个实现了org.apacha.kafka.common.serialization.Serializer接口的类。

4.生产者的配置参数:

acks、buffer.memory、compression.type、retries、batch.size、linger.ms。。。

第四章 4.8 64页

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值