訪問投遞嘗試次數
要訪問阻塞和非阻塞的投遞嘗試,請將以下頭新增到您的 @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。