领先一步
VMware 提供培训和认证,助您快速提升技能。
了解更多我很高兴地宣布 Apache Kafka 版 Spring 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 秒延迟的主题。当该投递失败时,记录将发送到延迟 2 秒的主题。当该投递失败时,它将发送到延迟 4 秒的主题,然后是 8 秒延迟,最后发送到死信主题,并使用(可选)的 @DltHandler
方法。
这允许在重试失败的记录的同时处理来自同一分区的后续记录。当然,如果需要严格排序,则应使用传统的重试机制。
框架负责预置主主题和延迟主题。延迟主题上的消费者将暂停,直到当前时间超过记录时间戳加上延迟。
有关此版本中所有更改的信息,请参阅 新增功能。