0
자동 커밋을 false로 설정하고 ConcurrentMessageListenerContainer
을 사용하여 주제에서 메시지를 소비하고 데이터베이스에 씁니다. 데이터베이스가 다운 된 경우 컨테이너가 설문 조사에서 현재 레코드를 처리하지 못하도록하고 다음에 수행하지 마십시오. poll()
. DataSourceHealthIndicator
을 구현했으며 데이터베이스 상태를 UP으로 확인한 후 나머지 레코드를 처리하기 위해 컨테이너를 다시 시작하려고합니다.예외에서 스프링 카프카 중지 컨테이너
제안 사항 나머지 레코드 처리를 중단하고 컨테이너를 중지하려면 어떻게해야합니까? consumer.close()
을 사용해 보았습니다. 그러나 그것은 프로세스를 멈추지 않고 계속 던지는 소비자는 이미 닫혀 있습니다.
AcknowledgingConsumerAwareMessageListener에는 컨테이너를 사용할 수 없습니다. 소비자 만 사용할 수 있습니다. – Mayur
Listener 메서드를 통해가 아니라 true로 설정하지만, autowire 또는 다른 방식으로 삽입 할 수 있습니다. 리스너 스레드에서 stop()을 호출하지 않아야합니다. 왜냐하면 종료 지연이 발생할 것이기 때문입니다. –
당신이 제안한 것과 거의 같은'ContainerStoppingErrorHandler'를 사용했습니다. – Mayur