向Kafka生产记录

问题描述 投票:2回答:2

我试图在不传递任何分区值的情况下向Kafka生成记录,但想发送标头,并且我在下面有重写方法来向Kafka生成记录,

ProducerRecord​(java.lang.String topic, java.lang.Integer partition, java.lang.Long timestamp, K key, V value)  

创建具有指定时间戳记的记录以发送到指定的主题和分区

ProducerRecord​(java.lang.String topic, java.lang.Integer partition, java.lang.Long timestamp, K key, V value, java.lang.Iterable<Header> headers)  

创建具有指定时间戳记的记录以发送到指定的主题和分区

ProducerRecord​(java.lang.String topic, java.lang.Integer partition, K key, V value)    

创建要发送到指定主题和分区的记录

ProducerRecord​(java.lang.String topic, java.lang.Integer partition, K key, V value, java.lang.Iterable<Header> headers)    

创建要发送到指定主题和分区的记录

ProducerRecord​(java.lang.String topic, K key, V value) 

创建要发送到Kafka的记录

ProducerRecord​(java.lang.String topic, V value)    

创建无键记录

在以上所有方法中,没有办法发送标题而不发送分区值,并且如果将partition设置为null,则会得到NullPointerException

您能建议我如何通过发送标头而不是分区值来在Kafka中产生记录。

apache-kafka kafka-producer-api
2个回答
1
投票

ProducerRecord对象具有方法headers(),该方法返回Headers接口,而该接口又允许您将add()您喜欢的任何标头。


0
投票

[Kafka ProducerRecord实例提供了可以在其中添加键值对的标头实例。

您可以浏览Kafka源代码以获取完整的信息。

add()

示例

我尝试使用https://github.com/a0x8o/kafka/blob/master/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java,但该功能在该版本中不可用。因此您还需要检查Kafka的客户端版本。

下面给出的示例正在使用kafka-clients-0.8.2.0

Kafka Client - 2.1.0
© www.soinside.com 2019 - 2024. All rights reserved.