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 Spring kafka不支持大型消息使用者_Apache Kafka_Spring Kafka - Fatal编程技术网

Apache kafka Spring kafka不支持大型消息使用者

Apache kafka Spring kafka不支持大型消息使用者,apache-kafka,spring-kafka,Apache Kafka,Spring Kafka,我正在使用spring Kafka来使用 鉴于此Kafka客户端始终将其构造函数中显示的AUTO\u OFFSET\u RESET\u CONFIG覆盖为none private LiKafkaConsumerImpl(LiKafkaConsumerConfig configs, Deserializer<K> keyDeserializer, Deserializer<V> valueDeserializer, Deserializer<L

我正在使用spring Kafka来使用

鉴于此Kafka客户端始终将其构造函数中显示的
AUTO\u OFFSET\u RESET\u CONFIG
覆盖为none

private LiKafkaConsumerImpl(LiKafkaConsumerConfig configs,
    Deserializer<K> keyDeserializer,
    Deserializer<V> valueDeserializer,
    Deserializer<LargeMessageSegment> largeMessageSegmentDeserializer,
    Auditor<K, V> consumerAuditor) {
        _kafkaConsumer = new KafkaConsumer<>(configs.configForVanillaConsumer(),
        byteArrayDeserializer,
        byteArrayDeserializer);
    }
Map<String, Object> configForVanillaConsumer() {
    Map<String, Object> newConfigs = new HashMap<>();
    newConfigs.putAll(this.originals());
    newConfigs.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
    newConfigs.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "none");
    return newConfigs;
}
私有的LiKafkaConsumerImpl(LiKafkaConsumerConfig配置,
反序列化器键反序列化器,
反序列化程序值反序列化程序,
反序列化程序largeMessageSegmentDeserializer,
审计员(编辑){
_kafkaConsumer=新的kafkaConsumer(configs.configForVanillaConsumer(),
byteArrayDeserializer,
ByteArrayder(序列化程序);
}
映射configForVanillaConsumer(){
Map newConfigs=newhashmap();
newConfigs.putAll(this.originals());
newConfigs.put(ConsumerConfig.ENABLE\u AUTO\u COMMIT\u CONFIG,false);
newConfigs.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,“无”);
返回新配置;
}
因此,一旦我开始使用批提交并将
ENABLE\u AUTO\u commit\u CONFIG
设置为false,它就会抛出以下错误:

[org.springframework.kafka.KafkaListenerEndpointContainer#0-1-C-1]错误o.a.k.c.c.i.ConsumerCoordinator-用户为组文档事件使用者提供的侦听器com.linkedin.kafka.clients.consumer.likafkaConsumerBalanceListener在分区分配org.apache.kafka.clients.consumer.NoOffsetForPartitionException:未定义偏移量,分区没有重置策略:DocumentEvents-2 位于org.apache.kafka.clients.consumer.internal.Fetcher.resetOffset(Fetcher.java:369) 位于org.apache.kafka.clients.consumer.internal.Fetcher.updateFetchPositions(Fetcher.java:247) 位于org.apache.kafka.clients.consumer.KafkaConsumer.updateFetchPositions(KafkaConsumer.java:1602) 位于org.apache.kafka.clients.consumer.KafkaConsumer.position(KafkaConsumer.java:1265) 在com.linkedin.kafka.clients.consumer.likafcaumerrimpl.position(likafcaumerrimpl.java:403) 位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer$1.onPartitionsAssigned(KafkaMessageListenerContainer.java:447) 在com.linkedin.kafka.clients.consumer.likafkaConsumerBalanceListener.onPartitionsAssigned上(likafkaConsumerBalanceListener.java:62) 位于org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.onJoinComplete(ConsumerCoordinator.java:255) 位于org.apache.kafka.clients.consumer.internals.AbstractCoordinator.joinGroupIfNeeded(AbstractCoordinator.java:339) 位于org.apache.kafka.clients.consumer.internals.AbstractCoordinator.EnsuleReactiveGroup(AbstractCoordinator.java:303) 位于org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:286) 访问org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1030) 访问org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995) 在com.linkedin.kafka.clients.consumer.likafcaumerrimpl.poll上(likafcaumerrimpl.java:231) 位于org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:558) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 运行(Thread.java:745)

发生此问题的原因是此使用者组是第一次使用此主题的邮件,因此它尝试使用偏移量重置策略

虽然我将其设置为“最早”,但它被底层LinkedIn kafka客户端覆盖为“无”

在本例中,我还试图覆盖ConsumerBalanceListener以手动搜索到开头,但实际上没有达到这一点


如何解决这个问题?

有趣;请在中打开一个问题

如果策略为
none
,我们应该捕获该异常

同时,您可以通过使用普通客户端一次来解决此问题,从而为组实际设置初始偏移量(您实际上不必接收任何消息,只需分配分区并为组设置初始位置即可)。

谢谢,我打开了一个我使用consumer position和seek方法来初始化consumer偏移量,这是它第一次使用主题分区。