此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.9spring-doc.cadn.net.cn

访问投放尝试

要访问阻止和非阻止投放尝试,请将这些标头添加到@KafkaListener方法签名:spring-doc.cadn.net.cn

@Header(KafkaHeaders.DELIVERY_ATTEMPT) int blockingAttempts,
@Header(name = RetryTopicHeaders.DEFAULT_HEADER_ATTEMPTS, required = false) Integer nonBlockingAttempts

仅当您将ContainerPropertiesdeliveryAttemptHeader 设置为true.spring-doc.cadn.net.cn

请注意,非阻塞尝试将是null用于初始交付。spring-doc.cadn.net.cn

从 3.0.10 版本开始,一个方便的KafkaMessageHeaderAccessor提供以允许更简单地访问这些标头;访问器可以作为侦听器方法的参数提供:spring-doc.cadn.net.cn

@RetryableTopic(backoff = @Backoff(...))
@KafkaListener(id = "dh1", topics = "dh1")
void listen(Thing thing, KafkaMessageHeaderAccessor accessor) {
    ...
}

accessor.getBlockingRetryDeliveryAttempt()accessor.getNonBlockingRetryDeliveryAttempt()以获取值。 访问器将抛出一个IllegalStateException如果未启用阻止重试;对于非阻塞重试,访问器返回1用于初始交付。spring-doc.cadn.net.cn