配信試行へのアクセス
ブロッキング配信試行とノンブロッキング配信試行にアクセスするには、@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
を返します。