访问投递尝试次数

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

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

只有当您将 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() 获取值。如果未启用阻塞重试,访问器将抛出 IllegalStateException;对于非阻塞重试,访问器在初始投递时返回 1

© . This site is unofficial and not affiliated with VMware.