领先一步
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 秒延迟的主题。 当该交付失败时,记录将发送到具有 2 秒延迟的主题。 当该交付失败时,它将转到具有 4 秒延迟的主题,然后是 8 秒延迟,最后转到具有(可选)@DltHandler
方法的死信主题。
这允许在重试失败记录时处理来自同一分区的后续记录。 当然,如果需要严格的排序,则应使用传统的重试。
该框架负责提供主主题和延迟主题。 延迟主题上的消费者将暂停,直到当前时间超过记录时间戳加上延迟。
有关此版本中所有更改的信息,请参见新增功能。