From 4c83df5448ad89667836639b1bb0ebdcedc2494d Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Wed, 25 Dec 2024 18:47:09 +0100 Subject: [PATCH] =?utf8?q?Test=20f=C3=BCr=20Retries=20mit=20fixem=20Back-O?= =?utf8?q?ff=20in=20`ExampleConsumerTest`=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../de/juplo/kafka/ExampleConsumerTest.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/test/java/de/juplo/kafka/ExampleConsumerTest.java b/src/test/java/de/juplo/kafka/ExampleConsumerTest.java index 0fe8fff6..07164853 100644 --- a/src/test/java/de/juplo/kafka/ExampleConsumerTest.java +++ b/src/test/java/de/juplo/kafka/ExampleConsumerTest.java @@ -422,6 +422,41 @@ public class ExampleConsumerTest .until(() -> mockRecordHandler.getNumMessagesHandled() == 29); } + @DisplayName("A message, that triggers a retryable exception in the domain-logic, is retried 3 times with a fixed back-of and all messages are eventually consumed") + @ParameterizedTest(name = "Back-Off millis: {0}") + @ValueSource(ints = { 100, 250, 500, 1000 }) + void testOneMessageIsRetriedWithFixedBackOff(int backOffMillis) + { + BackOff backOff = new FixedBackOff(backOffMillis, 3); + createExampleConsumer(backOff); + + sendValidMessage(0); + sendValidMessage(1); + sendValidMessage(2); + sendMessageThatTriggersRetriableExceptionInDomain(3, 3); + sendValidMessage(4); + sendValidMessage(5); + sendValidMessage(6); + sendValidMessage(7); + sendValidMessage(8); + sendValidMessage(9); + sendValidMessage(0); + sendValidMessage(1); + sendValidMessage(2); + sendValidMessage(3); + sendValidMessage(4); + sendValidMessage(5); + sendValidMessage(6); + sendValidMessage(7); + sendValidMessage(8); + sendValidMessage(9); + + Awaitility + .await("All messages are eventually consumed") + .atMost(Duration.ofSeconds(15)) + .until(() -> mockRecordHandler.getNumMessagesHandled() == 20); + } + static final String ID = "TEST"; static final String TOPIC = "ExampleConsumerTest_TEST"; -- 2.20.1