application.properties 봄 부팅 카프카 설정 ackOnError

비아 틀라나 :

집합 건물 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기본적으로.

추천

출처http://43.154.161.224:23101/article/api/json?id=235773&siteId=1