web-dev-qa-db-fra.com

Spring Kafka Consumer Retry

J'utilise Spring Kafka consumer qui récupère les messages d'un sujet et les conserve dans une base de données. Si une condition d'échec est remplie, disons par exemple que la base de données n'est pas disponible, kafka fournit un mécanisme pour réessayer? Si tel est le cas, existe-t-il un moyen de définir différents intervalles de relance, tels que la première relance doit être effectuée après 5 minutes, la deuxième après 30 minutes, la troisième après 1 heure, etc.

9
Punter Vicky

Spring Kafka est fourni avec RetryingMessageListenerAdapter et RetryingAcknowledgingMessageListenerAdapter. Si vous utilisez @KafkaListener, vous pouvez fournir AbstractKafkaListenerContainerFactory avec le RetryTemplate. Et le dernier peut être injecté avec n'importe quel RetryPolicy et BackOffPolicy personnalisé du projet Spring Retry:

https://docs.spring.io/spring-kafka/docs/2.0.0.RELEASE/reference/html/_reference.html#_retrying_deliveries

Gardez également à l'esprit que depuis la version 2.0, Spring Kafka prend en charge les transactions, basé sur celui-ci dans Apache Kafka 0.11.x.x:

https://docs.spring.io/spring-kafka/docs/2.0.0.RELEASE/reference/html/_reference.html#transactions

10
Artem Bilan