Java向Kafka的topic中写数据_Kafka生产者-向Kafka中写入数据

本文介绍了如何使用Java向Kafka的topic中写数据,讲解了Kafka生产者的API使用,包括消息序列化、发送方式、配置选项,以及如何保证消息顺序。同时,展示了创建Avro序列化器和自定义Partitioner的例子。
摘要由CSDN通过智能技术生成

(1)生产者概览

(1)不同的应用场景对消息有不同的需求,即是否允许消息丢失、重复、延迟以及吞吐量的要求。不同场景对Kafka生产者的API使用和配置会有直接的影响。

例子1:信用卡事务处理系统,不允许消息的重复和丢失,延迟最大500ms,对吞吐量要求较高。

例子2:保存网站的点击信息,允许少量的消息丢失和重复,延迟可以稍高(用户点击链接可以马上加载出页面即可),吞吐量取决于用户使用网站的频度。

(2)Kafka发送消息的主要步骤

消息格式:每个消息是一个ProducerRecord对象,必须指定消息所属的Topic和消息值Value,此外还可以指定消息所属的Partition以及消息的Key。

1:序列化ProducerRecord

2:如果ProducerRecord中指定了Partition,则Partitioner不做任何事情;否则,Partitioner根据消息的key得到一个Partition。这是生产者就知道向哪个Topic下的哪个Partition发送这条消息。

3:消息被添加到相应的batch中,独立的线程将这些batch发送到Broker上

4:broker收到消息会返回一个响应。如果消息成功写入Kafka,则返回RecordMetaData对象,该对象包含了Topic信息、Patition信息、消息在Partition中的Offset信息;若失败,返回一个错误

f8007d703d08b29d03fa466c24c04fac.png

(3)Kafka的顺序保证。Kafka保证同一个partition中的消息是有序的,即如果生产者按照一定的顺序发送消息,broker就会按照这个顺序把他们写入partition,消费者也会按照相同的顺序读取他们。

例子:向账户中先存100再取出来  和  先取100再存进去是完全不同的,因此这样的场景对顺序很敏感。

如果某些场景要求消息是有序的,那么不建议把retries设置成0,。可以把m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值