代码之家  ›  专栏  ›  技术社区  ›  tuk

在kafka客户端0.10中,kafka如何处理producerrecord中的分区负数?

  •  0
  • tuk  · 技术社区  · 6 年前

    在Kafka客户端1.1.0中,放置了一个不允许为负的支票 partition 在里面 ProducerRecord 是的。

    https://github.com/apache/kafka/blob/1.1/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java#L73

    但我没看到这样的登记 生产记录 在Kafka客户端0.10.0中。

    https://github.com/apache/kafka/blob/0.10.0/clients/src/main/java/org/apache/kafka/clients/producer/ProducerRecord.java#L62

    有人能告诉我卡夫卡是怎么处理负数的吗? 分区 在里面 生产记录 0.10分?分区会被转换成正数吗?如果是,有人能告诉我转换的代码/逻辑吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mickael Maison    6 年前

    对于0.10.0 kafka producer,分区的负数也会被拒绝。

    检查没有完成 ProducerRecord 就像在最近的版本中,但是 KafkaProducer.partition() 您将得到以下堆栈跟踪:

    Exception in thread "main" java.lang.IllegalArgumentException: Invalid partition given with record: -1 is not in the range [0...0].
    at org.apache.kafka.clients.producer.KafkaProducer.partition(KafkaProducer.java:717)
    at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:459)
    at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:430)
    at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:353)