비아 틀라나 :
집합 건물 ackOnError에 방법이 있나요 = false를 사용하여 봄 부팅과 같은 다른 청취자 속성과 같은 파일을있는 application.properties :
spring.kafka.listener.ack-mode
spring.kafka.listener.ack-count
spring.kafka.listener.ack-time
spring.kafka.listener.poll-timeout
?
그것은 할 수없는 경우 어떻게 결합 고양이 : + 자바 설정 파일의 속성? 이 같은 자바 구성의 모든 카프카의 속성을 설정하지 않으 :
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
......
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
return props;
}
난 그냥 속성 ackOnError을 재정의합니다. 사전에 감사합니다.
게리 러셀 :
이 속성으로 사용할 수없는하지만 당신은 부팅의 컨테이너 공장을 무시할 수 @Bean
는 다음과 같이 ...
@Bean
ConcurrentKafkaListenerContainerFactory<?, ?> kafkaListenerContainerFactory(
ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
ConsumerFactory<Object, Object> kafkaConsumerFactory) {
ConcurrentKafkaListenerContainerFactory<Object, Object> factory = new ConcurrentKafkaListenerContainerFactory<>();
configurer.configure(factory, kafkaConsumerFactory);
factory.getContainerProperties().setAckOnError(false);
return factory;
}
이뿐만 아니라 다른 모든 부팅 속성을 적용합니다.
당신은 또한 (A와 예를 들어 컨테이너를 중지하지 않는 한 그러나이 설정은 많은 유틸리티를 가지고 있지 않습니다 ContainerStoppingErrorHandler
).
다음 성공적으로 기록이 그 어쨌든 최선을 다하고 오프셋 한 것이기 때문에 이것은 실패한 기록의 오프셋 (offset)를 넘어 인이다.
말했다, 2.3, 그것은 것입니다 false
기본적으로.