領先一步
VMware 提供培訓和認證,助您加速進步。
瞭解更多我很高興地宣佈 Spring for Apache Kafka 2.7.0 現已釋出。
此版本包含一個重大的增強功能,這是社群貢獻。失敗的交付可以轉發到一系列主題以進行延遲重試。
最好透過一個示例來描述
@RetryableTopic(attempts = "5", backoff = @Backoff(delay = 1000, multiplier = 2.0))
@KafkaListener(id = "sk270", topics = "sk270")
public void listen(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
LOG.info(in + " from " + topic);
throw new RuntimeException("test");
}
@DltHandler
public void dlt(String in, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
LOG.info(in + " from " + topic);
}
在此配置下,首次投遞嘗試失敗,記錄將傳送到一個配置為延遲1秒的topic。當該投遞失敗時,記錄將傳送到一個延遲2秒的topic。當該投遞失敗時,它會發送到一個延遲4秒的topic,然後是延遲8秒,最後傳送到一個死信topic,並帶有一個(可選的)@DltHandler方法。
這允許在重試失敗記錄的同時處理同一分割槽中的後續記錄。當然,如果需要嚴格的順序,則應使用傳統的重試機制。
該框架負責提供主topic和延遲topic。延遲topic上的消費者會暫停,直到當前時間超過記錄時間戳加上延遲時間。
有關此版本中所有更改的資訊,請參閱新增功能。