Spring for Apache Kafka 2.7.0 已发布

工程 | Gary Russell | 2021年4月14日 | ...

我很高兴地宣布 Spring for Apache Kafka 2.7.0 现已发布。

此版本包含一个重大的增强功能,这是社区贡献。失败的交付可以转发到一系列主题以进行延迟重试。

最好通过一个示例来描述

@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);
}

在此配置下,首次投递尝试失败,记录将发送到一个配置为延迟1秒的topic。当该投递失败时,记录将发送到一个延迟2秒的topic。当该投递失败时,它会发送到一个延迟4秒的topic,然后是延迟8秒,最后发送到一个死信topic,并带有一个(可选的)@DltHandler方法。

这允许在重试失败记录的同时处理同一分区中的后续记录。当然,如果需要严格的顺序,则应使用传统的重试机制。

该框架负责提供主topic和延迟topic。延迟topic上的消费者会暂停,直到当前时间超过记录时间戳加上延迟时间。

有关此版本中所有更改的信息,请参阅新增功能

项目页面 | GitHub | 问题 | 文档 | Stack Overflow | Gitter

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有