Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡分区为空_Apache Kafka_Spring Kafka_Kafka Producer Api - Fatal编程技术网

Apache kafka 卡夫卡分区为空

Apache kafka 卡夫卡分区为空,apache-kafka,spring-kafka,kafka-producer-api,Apache Kafka,Spring Kafka,Kafka Producer Api,我使用SpringKafka模板将消息写入kafka主题,下面的API用于发布消息 public ListenableFuture发送(字符串主题,K键,@Nullable V data){…} 使用此API的好处是它返回一个sendResult对象,该对象包含一些元数据,如主题、分区、标题等。我有一个回调,在成功时打印sendResult。现在的问题是,分区被打印为空 我没有回电话,而是尝试将此更改为 future.get(10,TimeUnit.SECONDS) 以获得结果。即使这样,分区也

我使用SpringKafka模板将消息写入kafka主题,下面的API用于发布消息

public ListenableFuture发送(字符串主题,K键,@Nullable V data){…}

使用此API的好处是它返回一个sendResult对象,该对象包含一些元数据,如主题、分区、标题等。我有一个回调,在成功时打印sendResult。现在的问题是,分区被打印为空

我没有回电话,而是尝试将此更改为
future.get(10,TimeUnit.SECONDS)

以获得结果。即使这样,分区也被打印为空。有人能告诉我这是什么原因吗?这是卡夫卡的默认行为吗?

您可能需要在
SendResult.getRecordMetadata()
中查找该信息,而不是
getProducerRecord()

ProducerRecord
不会被
KafkaProducer
修改。因此,您使用的API最终是这样的:

public ListenableFuture<SendResult<K, V>> send(String topic, K key, @Nullable V data) {
    ProducerRecord<K, V> producerRecord = new ProducerRecord<>(topic, key, data);
    return doSend(producerRecord);
}
public ListenableFuture发送(字符串主题,K键,@Nullable V data){
ProducerRecord ProducerRecord=新的ProducerRecord(主题、键、数据);
返回doSend(生产记录);
}
其中,
ProducerRecord
分区
属性实际上是
null

另一方面,
RecordMetadata
,实际上是在服务器应答之后构建的。
您可以从其
partition()
选项中获取所需信息。

Right
SendResult[producerRecord=producerRecord(主题=topic-1,分区=null,标题=RecordHeaders(标题=[],isReadOnly=true),键=null,值=foo,时间戳=null),记录元数据=topic-1-0@0]
@Artem Bilen RecordMetaData中的分区方法确实在打印主题。谢谢。