From: Kai Moritz Date: Wed, 25 Dec 2024 17:47:09 +0000 (+0100) Subject: TEST X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=af9434f7cf6a7ce1eb210b1d435acf850a9fbaa7;p=demos%2Fkafka%2Ftraining TEST --- 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";