+++ /dev/null
-#!/bin/bash
-
-IMAGE=juplo/spring-consumer:1.1-deserialization-error-SNAPSHOT
-
-if [ "$1" = "cleanup" ]
-then
- docker compose -f docker/docker-compose.yml down -t0 -v --remove-orphans
- mvn clean
- exit
-fi
-
-docker compose -f docker/docker-compose.yml up -d --remove-orphans kafka-1 kafka-2 kafka-3
-docker compose -f docker/docker-compose.yml rm -svf peter ute
-
-if [[
- $(docker image ls -q $IMAGE) == "" ||
- "$1" = "build"
-]]
-then
- mvn clean install || exit
-else
- echo "Using image existing images:"
- docker image ls $IMAGE
-fi
-
-docker compose -f docker/docker-compose.yml up --remove-orphans setup || exit 1
-
-
-docker compose -f docker/docker-compose.yml up -d producer
-docker compose -f docker/docker-compose.yml up -d peter ute
-sleep 15
-
-docker compose -f docker/docker-compose.yml stop producer
-
-echo
-echo "Von peter empfangen:"
-docker compose -f docker/docker-compose.yml logs peter | grep '\ test\/.'
-echo
-echo "Von ute empfangen:"
-docker compose -f docker/docker-compose.yml logs ute | grep '\ test\/.'
-
-docker compose -f docker/docker-compose.yml stop peter ute
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
-import org.apache.kafka.common.errors.RecordDeserializationException;
import org.apache.kafka.common.errors.WakeupException;
import java.time.Duration;
while (running)
{
- try
- {
- ConsumerRecords<String, Long> records =
+ ConsumerRecords<String, Long> records =
consumer.poll(Duration.ofSeconds(1));
- log.info("{} - Received {} messages", id, records.count());
- for (ConsumerRecord<String, Long> record : records)
- {
- handleRecord(
- record.topic(),
- record.partition(),
- record.offset(),
- record.key(),
- record.value());
- }
- }
- catch (RecordDeserializationException e)
+ log.info("{} - Received {} messages", id, records.count());
+ for (ConsumerRecord<String, Long> record : records)
{
- log.error(
- "{} - Ignoring invalid record for offset {} on partition {}: {}",
- id,
- e.offset(),
- e.topicPartition(),
- e.getMessage());
- consumer.seek(e.topicPartition(), e.offset() + 1);
+ handleRecord(
+ record.topic(),
+ record.partition(),
+ record.offset(),
+ record.key(),
+ record.value());
}
}
}