跳到主要内容

访问投递尝试

ChatGPT-4o-mini 中英对照 Accessing Delivery Attempts

要访问阻塞和非阻塞的交付尝试,请将以下头部添加到您的 @KafkaListener 方法签名中:

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

阻止交付尝试仅在您将 ContainerPropertiesdeliveryAttemptHeader 设置为 true 时提供。

注意,非阻塞尝试在初始交付时将为 null

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

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

使用 accessor.getBlockingRetryDeliveryAttempt()accessor.getNonBlockingRetryDeliveryAttempt() 来获取值。如果未启用阻塞重试,accessor 将抛出 IllegalStateException;对于非阻塞重试,accessor 在初始交付时返回 1