diff --git a/samples/sample-01/README.adoc b/samples/sample-01/README.adoc
index 59504694..50c5261f 100644
--- a/samples/sample-01/README.adoc
+++ b/samples/sample-01/README.adoc
@@ -12,7 +12,9 @@ Console:
`2018-11-05 10:03:40.216 INFO 39766 --- [ fooGroup-0-C-1] com.example.Application : Received: Foo2 [foo=bar]`
-The consumer is configured with a `SeekToCurrentErrorHandler` which replays failed messages up to 3 times and, after retries are exhausted, sends a bad message to a dead-letter topic.
+The consumer is configured with a `SeekToCurrentErrorHandler` which replays failed messages up to 2 times, each after a 1 second delay and, after retries are exhausted, sends a bad message to a dead-letter topic.
+
+`$ curl -X POST http://localhost:8080/send/foo/fail`
A second `@KafkaListener` consumes the raw JSON from the message.
diff --git a/samples/sample-01/pom.xml b/samples/sample-01/pom.xml
index 5db136ca..dfc3dd05 100644
--- a/samples/sample-01/pom.xml
+++ b/samples/sample-01/pom.xml
@@ -5,7 +5,7 @@
com.examplekafka-sample-01
- 2.3.1.RELEASE
+ 2.4.4.RELEASEjarkafka-sample-01
@@ -14,7 +14,7 @@
org.springframework.bootspring-boot-starter-parent
- 2.2.0.RELEASE
+ 2.2.6.RELEASE
diff --git a/samples/sample-01/src/main/java/com/example/Application.java b/samples/sample-01/src/main/java/com/example/Application.java
index 5219c152..a7167809 100644
--- a/samples/sample-01/src/main/java/com/example/Application.java
+++ b/samples/sample-01/src/main/java/com/example/Application.java
@@ -20,13 +20,13 @@ import org.apache.kafka.clients.admin.NewTopic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.kafka.ConcurrentKafkaListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
+import org.springframework.core.task.SimpleAsyncTaskExecutor;
+import org.springframework.core.task.TaskExecutor;
import org.springframework.kafka.annotation.KafkaListener;
-import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
-import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.listener.DeadLetterPublishingRecoverer;
import org.springframework.kafka.listener.SeekToCurrentErrorHandler;
@@ -37,6 +37,7 @@ import org.springframework.util.backoff.FixedBackOff;
import com.common.Foo2;
/**
+ * Sample shows use of a dead letter topic.
*
* @author Gary Russell
* @since 2.2.1
@@ -47,20 +48,19 @@ public class Application {
private final Logger logger = LoggerFactory.getLogger(Application.class);
+ private final TaskExecutor exec = new SimpleAsyncTaskExecutor();
+
public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
+ SpringApplication.run(Application.class, args).close();
}
+ /*
+ * Boot will autowire this into the container factory.
+ */
@Bean
- public ConcurrentKafkaListenerContainerFactory, ?> kafkaListenerContainerFactory(
- ConcurrentKafkaListenerContainerFactoryConfigurer configurer,
- ConsumerFactory