领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我很高兴地宣布 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上的消费者会暂停,直到当前时间超过记录时间戳加上延迟时间。
有关此版本中所有更改的信息,请参阅新增功能。