我试图在不传递任何分区值的情况下向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中产生记录。
ProducerRecord
对象具有方法headers()
,该方法返回Headers
接口,而该接口又允许您将add()
您喜欢的任何标头。
[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