跳到主要内容
版本:4.1.1

访问投递次数

Doubao 中英对照 Accessing Delivery Attempts

要访问阻塞和非阻塞投递次数,请将以下这些头添加到你的 @KafkaListener 方法签名中:

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

仅当你将 ContainerProperties 的 deliveryAttemptHeader 设置为 true 时,才会提供阻塞投递次数。

请注意,对于初始投递,非阻塞次数将为 null。

从 3.0.10 版本开始,提供了一个便捷的 KafkaMessageHeaderAccessor,以便更简单地访问这些头;该访问器可以作为参数提供给监听器方法:

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

使用 accessor.getBlockingRetryDeliveryAttempt() 和 accessor.getNonBlockingRetryDeliveryAttempt() 来获取这些值。如果未启用阻塞重试,访问器将抛出 IllegalStateException;对于非阻塞重试,访问器对初始投递返回 1。