簡體   English   中英

從 spring-kafka 2.7.14 遷移到 3.0.1

[英]Migrating from spring-kafka 2.7.14 to 3.0.1

我們正在從 spring 5 遷移到 6。我遇到了以下與 spring-kafka 相關的方法的問題。

  1. SetErrorHandler 已棄用,取而代之的是 CommonErrorHandler -> 我將其替換為 setCommonErrorHandler(Recoverer,Back off)

  2. factory.setRetryTemplate(neverRetry...) -> 移除以支持 CommonErrorHandler。 我想設置一個“neverRetry”,以便 recoveryCallback 可以解決重試問題。

  3. factory.setRecoveryCallback -> 移除以支持 CommonErrorHandler。 我想檢查拋出的異常並僅針對特定異常將其提供給錯誤處理程序,並在所有其他異常的情況下僅記錄/返回。

在移動到 3.0.1 后,我正在尋找處理第 2 點和第 3 點的建議。 我如何才能有效地設置 commonErrorHandler 以復制我們在 2.7.14 上運行時的相同行為。

我將 SetErrorHandler 替換為 setCommonErrorHandler(Recoverer,Back off) 但這對於我們的用例來說還不夠。 我們需要檢查異常類型並僅在接收到特定異常時才使用錯誤處理程序。 (這是早些時候通過 recoveryCallback 方法實現的)

RetryTemplate的使用已被棄用很長時間。

請參閱DefaultErrorHandler ...

/**
 * Add exception types to the default list. By default, the following exceptions will
 * not be retried:
 * <ul>
 * <li>{@link DeserializationException}</li>
 * <li>{@link MessageConversionException}</li>
 * <li>{@link ConversionException}</li>
 * <li>{@link MethodArgumentResolutionException}</li>
 * <li>{@link NoSuchMethodException}</li>
 * <li>{@link ClassCastException}</li>
 * </ul>
 * All others will be retried, unless {@link #defaultFalse()} has been called.
 * @param exceptionTypes the exception types.
 * @see #removeClassification(Class)
 * @see #setClassifications(Map, boolean)
 */
public final void addNotRetryableExceptions(Class<? extends Exception>... exceptionTypes) {

不可重試的異常直接發送給恢復器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM