Spring for Apache Kafka 2.7.0 Available

Engineering | Gary Russell | April 14, 2021 | ...

I am pleased to announce that Spring for Apache Kafka 2.7.0 is now available.

This release contains a significant enhancement, which is a community contribution. Failed deliveries can be forwarded to a series of topics for delayed redelivery.

It is best described with an example:

@RetryableTopic(attempts = "5", backoff = @Backoff(delay = 1000, multiplier = 2.0))
@KafkaListener(id = "sk270", topics = "sk270")
public void listen(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
    LOG.info(in + " from " + topic);
    throw new RuntimeException("test");
}

@DltHandler
public void dlt(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
    LOG.info(in + " from " + topic);
}

With this configuration, the first delivery attempt fails and the record is sent to a topic configured for a 1-second delay. When that delivery fails, the record is sent to a topic with a 2-second delay. When that delivery fails, it goes to a topic with a 4-second delay, then an 8 second delay, and, finally, to a dead letter topic with an (optional) @DltHandler method.

This allows processing of subsequent records from the same partition while retrying the failed record. Of course, if strict ordering is needed, then traditional retries should be used.

The framework takes care of provisioning the main and delayed topics. The consumers on the delayed topics are paused until the current time exceeds the record timestamp plus the delay.

For information about all changes in this release, see What’s New.

Project Page | GitHub | Issues | Documentation | Stack Overflow | Gitter

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all