|
对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.6! |
访问传递尝试
要访问阻止和非阻止送达尝试,请将这些标头添加到您的@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以允许对这些标头进行更简单的访问;该访问器可以作为 listener 方法的参数提供:
@RetryableTopic(backoff = @Backoff(...))
@KafkaListener(id = "dh1", topics = "dh1")
void listen(Thing thing, KafkaMessageHeaderAccessor accessor) {
...
}
用accessor.getBlockingRetryDeliveryAttempt()和accessor.getNonBlockingRetryDeliveryAttempt()以获取值。
访问器将抛出IllegalStateException如果未启用阻止重试;对于非阻塞重试,访问器返回1进行初始投放。