# Lab03 - Consumer

# Rappel

lab03

# Préparer le projet

  • ⚠️ Checkout de la branche step03 ⚠️.

  • Se placer dans le répertoire Lab03-consumer

# Un peu de code

# Utilisation de l'API Consumer

  • Explorer le projet Spring Boot Lab03-consumer

    • La configuration présente dans le fichier application.properties
    • L'auto-configuration de ConsumerFactory<String, String>
  • Compléter la méthode KafkaRestConsumer#consume()

Indices:

  • create consumer
  • consumer close
  • subscribe on topic
  • poll and for each
  • send from emitter
  • close again

# Utilisation de l'annotation KafkaListener

  • Annotation @KafkaListener

    • Le @KafkaListener est une annotation pour désigner une méthode comme écouteur/consumer.
  • Principe de Dead-Letter Topic (DLT)

    • Vous pouvez configurer un handler (ex : SeekToCurrentErrorHandler) avec un récupérateur d'enregistrements lorsque le nombre maximal d'échecs est atteint pour un record
    • Spring-Kafka fournit également le DeadLetterPublishingRecoverer, qui publie le message d'échec dans un autre topic
    • cf. KafkaConfigListener
  • Pour utiliser l'annotation @KafkaListener et le principe de Dead-Letter Topic, il faut activer le profil Spring listener, le listener sur le topic vehicle-positions va générer une exception sur tous les records ayant un offset pair, pour rediriger ce record sur une DLT vehicle-positions.DLT.

# Démarrer votre application en local

  • Jouer avec le wait, vérifier le lag dans akhq, afficher le topic __consumer_offset

  • Pour builder et démarrer le conteneur

docker build -t vp-consumer .
docker run --name vp-consumer --network=tz-kafka-network -d vp-consumer

# Démarrer votre application en local

  • Il s'agit d'un projet Maven qui dispose d'un wrapper mvnw et du plugin spring-boot-maven-plugin, vous pouvez démarrer votre application spring en local à l'aide de la commande suivante :

Se placer dans le bon répertoire Lab03-consumer

./mvnw spring-boot:run

lag.png

# Packager votre application avec Docker

  • Pour builder et démarrer le conteneur

Se placer dans le bon répertoire Lab03-consumer

docker build -t vp-consumer .
docker run --name vp-consumer --network=tz-kafka-network -p 8091:8091 -d vp-consumer
  • Pour démarrer votre conteneur avec le profil listener
docker run --name vp-consumer --network=tz-kafka-network -p 8091:8091 -e "SPRING_PROFILES_ACTIVE=listener" -d vp-consumer

Supprimer le conteneur si déjà présent

docker container stop vp-consumer
docker container rm vp-consumer

# Solution

Vous vous doutez que pour disposer des solutions de la step03, il vous suffit de️ checkout la branche step04 😊