クラス DefaultErrorHandler
- 実装されたすべてのインターフェース:
CommonErrorHandler
,DeliveryAttemptAware
レコードリスナーの場合、残りのレコード内の各トピックの現在のオフセットをシークするエラーハンドラー。メッセージの失敗後に、再生できるようにパーティションを巻き戻すために使用されます。バッチリスナーの場合、レコードのバッチ内の各トピックの現在のオフセットをシークします。バッチを再生できるように、メッセージの失敗後にパーティションを巻き戻すために使用されます。リスナーが失敗したレコードとともに
BatchListenerFailedException
をスローした場合。レコードの前のレコードのオフセットがコミットされ、残りのレコードのパーティションが再配置されるか、失敗したレコードを回復してスキップできます。他の例外がスローされた場合、または例外で有効なレコードが提供されなかった場合、エラー処理はこのハンドラーの BackOff
を使用して FallbackBatchErrorHandler
に委譲されます。レコードが復元されると、そのオフセットがコミットされます。これは、従来の SeekToCurrentErrorHandler
および SeekToCurrentBatchErrorHandler
に代わるものです (ただし、フォールバックでは、無期限に再試行するのではなく、再試行が完了した後にメッセージを回復プログラムに送信できるようになりました)。- 導入:
- 2.8
- 作成者:
- Gary Russell
フィールドのサマリー
クラス org.springframework.kafka.listener.FailedRecordProcessor から継承されたフィールド
logger
コンストラクターの概要
コンストラクターコンストラクター説明デフォルトのバックオフ (9 回の再試行、遅延なし) で、トピック / パーティション / オフセットに対して 10 (maxFailures) が発生した後にレコードをログに記録するだけのデフォルトのリカバリを使用してインスタンスを構築します。DefaultErrorHandler
(ConsumerRecordRecoverer recoverer) トピック / パーティション / オフセットに対して 10 (maxFailures) が発生した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。DefaultErrorHandler
(ConsumerRecordRecoverer recoverer, BackOff backOff) backOff がトピック / パーティション / オフセットに対して STOP を返した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。DefaultErrorHandler
(ConsumerRecordRecoverer recoverer, BackOff backOff, BackOffHandler backOffHandler) backOff がトピック / パーティション / オフセットに対して STOP を返した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。DefaultErrorHandler
(BackOff backOff) backOff がトピック / パーティション / オフセットに対して STOP を返した後にレコードをログに記録するだけのデフォルトのリカバリを使用してインスタンスを構築します。メソッドのサマリー
修飾子と型メソッド説明boolean
このエラーハンドラーが配信試行ヘッダーをサポートしている場合は true を返します。void
handleBatch
(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, RunnableSE invokeListener) バッチリスナーの例外を処理します。<K,
V> org.apache.kafka.clients.consumer.ConsumerRecords<K, V> handleBatchAndReturnRemaining
(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, RunnableSE invokeListener) バッチリスナーの例外を処理します。boolean
handleOne
(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container) CommonErrorHandler.seeksAfterHandling()
が false を返したときに、レコードリスナーの例外を処理します。void
handleOtherException
(ExceptionSE thrownException, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, boolean batchListener) 利用可能なレコードがない状態で例外がスローされた場合に呼び出されます。void
handleRemaining
(ExceptionSE thrownException, ListSE<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container) CommonErrorHandler.seeksAfterHandling()
が true を返したときに、レコードリスナーの例外を処理します。boolean
処理されたエラーに対してオフセットをコミットする必要がある場合は true を返します(例外はスローされません)。void
onPartitionsAssigned
(org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, CollectionSE<org.apache.kafka.common.TopicPartition> partitions, RunnableSE publishPause) パーティションが割り当てられたときに呼び出されます。boolean
このエラーハンドラーが失敗したレコードと残りのレコード(または失敗したレコードが回復した後の残りのレコードのみ)に対してシークを実行する場合は true を返します。void
setAckAfterHandle
(boolean ackAfterHandle) コンテナーがリカバリされたレコードのオフセットをコミットしないようにするには、false に設定します(エラーハンドラー自体が例外をスローしない場合)。void
setCommitRecovered
(boolean commitRecovered) 回復されたレコードのオフセットをコミットするには、true に設定します。クラス org.springframework.kafka.listener.FailedBatchProcessor から継承されたメソッド
doHandle, getFallbackBatchHandler, handle, notRetryable, removeClassification, setClassifications, setLogLevel, setReclassifyOnExceptionChange, setRetryListeners
クラス org.springframework.kafka.listener.FailedRecordProcessor から継承されたメソッド
clearThreadState, deliveryAttempt, getFailureTracker, getRetryListeners, isCommitRecovered, isSeekAfterError, setBackOffFunction, setResetStateOnExceptionChange, setResetStateOnRecoveryFailure, setSeekAfterError
クラス org.springframework.kafka.listener.ExceptionClassifier から継承されたメソッド
addNotRetryableExceptions, addRetryableExceptions, defaultFalse, defaultFalse, defaultFatalExceptionsList, getClassifier
クラス org.springframework.kafka.listener.KafkaExceptionLogLevelAware から継承されたメソッド
getLogLevel
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.kafka.listener.CommonErrorHandler から継承されたメソッド
clearThreadState, deliveryAttempt, logger
コンストラクターの詳細
DefaultErrorHandler
public DefaultErrorHandler()デフォルトのバックオフ (9 回の再試行、遅延なし) で、トピック / パーティション / オフセットに対して 10 (maxFailures) が発生した後にレコードをログに記録するだけのデフォルトのリカバリを使用してインスタンスを構築します。DefaultErrorHandler
backOff がトピック / パーティション / オフセットに対して STOP を返した後にレコードをログに記録するだけのデフォルトのリカバリを使用してインスタンスを構築します。- パラメーター:
backOff
-BackOff
DefaultErrorHandler
トピック / パーティション / オフセットに対して 10 (maxFailures) が発生した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。- パラメーター:
recoverer
- 回復者。
DefaultErrorHandler
backOff がトピック / パーティション / オフセットに対して STOP を返した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。- パラメーター:
recoverer
- 回復者 ; null の場合、デフォルト (ロギング) リカバリが使用されます。backOff
-BackOff
DefaultErrorHandler
public DefaultErrorHandler(@Nullable ConsumerRecordRecoverer recoverer, BackOff backOff, @Nullable BackOffHandler backOffHandler) backOff がトピック / パーティション / オフセットに対して STOP を返した後に呼び出される、提供されたリカバリを使用してインスタンスを構築します。- パラメーター:
recoverer
- 回復者 ; null の場合、デフォルト (ロギング) リカバリが使用されます。backOff
-BackOff
backOffHandler
-BackOffHandler
- 導入:
- 2.9
メソッドの詳細
setCommitRecovered
public void setCommitRecovered(boolean commitRecovered) 復元されたレコードのオフセットをコミットするには、true に設定します。コンテナーはContainerProperties.AckMode.MANUAL_IMMEDIATE
で構成されている必要があります。コミットが同期か非同期かは、コンテナーの syncCommits プロパティによって決まります。- オーバーライド:
- クラス
FailedRecordProcessor
のsetCommitRecovered
- パラメーター:
commitRecovered
- コミットする場合は true。
isAckAfterHandle
public boolean isAckAfterHandle()インターフェースからコピーされた説明:CommonErrorHandler
処理されたエラーに対してオフセットをコミットする必要がある場合は true を返します(例外はスローされません)。- 次で指定:
- インターフェース
CommonErrorHandler
のisAckAfterHandle
- 戻り値:
- コミットする場合は true。
setAckAfterHandle
public void setAckAfterHandle(boolean ackAfterHandle) インターフェースからコピーされた説明:CommonErrorHandler
コンテナーがリカバリされたレコードのオフセットをコミットしないようにするには、false に設定します(エラーハンドラー自体が例外をスローしない場合)。- 次で指定:
- インターフェース
CommonErrorHandler
のsetAckAfterHandle
- パラメーター:
ackAfterHandle
- コミットしない場合は false。
seeksAfterHandling
public boolean seeksAfterHandling()インターフェースからコピーされた説明:CommonErrorHandler
このエラーハンドラーが失敗したレコードと残りのレコード(または失敗したレコードが回復した後の残りのレコードのみ)に対してシークを実行する場合は true を返します。- 次で指定:
- インターフェース
CommonErrorHandler
のseeksAfterHandling
- 戻り値:
- 次のポーリングでレコードをフェッチする必要がある場合は true。
deliveryAttemptHeader
public boolean deliveryAttemptHeader()インターフェースからコピーされた説明:CommonErrorHandler
このエラーハンドラーが配信試行ヘッダーをサポートしている場合は true を返します。- 次で指定:
- インターフェース
CommonErrorHandler
のdeliveryAttemptHeader
- 戻り値:
- 可能であれば true。
handleOne
public boolean handleOne(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecord<?, ?> record, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container) インターフェースからコピーされた説明:CommonErrorHandler
CommonErrorHandler.seeksAfterHandling()
が false を返した場合のレコードリスナーの例外を処理します。これを使用して、失敗した単一のレコードのみを処理します。- 次で指定:
- インターフェース
CommonErrorHandler
のhandleOne
- パラメーター:
thrownException
- 例外。record
- レコード。consumer
- コンシューマー。container
- コンテナー。- 戻り値:
- エラーが「処理」された場合は true、そうでない場合は false で、コンテナーはレコードをリスナーに再送信します。
- 関連事項:
handleRemaining
public void handleRemaining(ExceptionSE thrownException, ListSE<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container) インターフェースからコピーされた説明:CommonErrorHandler
CommonErrorHandler.seeksAfterHandling()
が true を返したときに、レコードリスナーの例外を処理します。失敗したレコードとポーリングの残りのすべてのレコードが渡されます。通常、エラーハンドラーがシークを実行して、残りのレコードが次のポーリングで再配信されるようにするときに使用されます。- 次で指定:
- インターフェース
CommonErrorHandler
のhandleRemaining
- パラメーター:
thrownException
- 例外。records
- 失敗したものを含む残りのレコード。consumer
- コンシューマー。container
- コンテナー。- 関連事項:
handleBatch
public void handleBatch(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, RunnableSE invokeListener) インターフェースからコピーされた説明:CommonErrorHandler
バッチリスナーの例外を処理します。ポーリングからの完全なConsumerRecords
が提供されます。バッチ内のレコードを再処理する場合は、エラーハンドラーがシークを実行する必要があります。- 次で指定:
- インターフェース
CommonErrorHandler
のhandleBatch
- パラメーター:
thrownException
- 例外。data
- コンシューマーの記録。consumer
- コンシューマー。container
- コンテナー。invokeListener
- リスナーを再起動するためのコールバック。
handleBatchAndReturnRemaining
public <K,V> org.apache.kafka.clients.consumer.ConsumerRecords<K,V> handleBatchAndReturnRemaining(ExceptionSE thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, RunnableSE invokeListener) インターフェースからコピーされた説明:CommonErrorHandler
バッチリスナーの例外を処理します。ポーリングからの完全なConsumerRecords
が提供されます。リスナーに再送信する必要があるバッチのメンバーを返します。返されるレコードは、元のレコードと同じ順序である必要があります。- 次で指定:
- インターフェース
CommonErrorHandler
のhandleBatchAndReturnRemaining
- 型パラメーター:
K
- 鍵の型。V
- 値の型。- パラメーター:
thrownException
- 例外。data
- コンシューマーの記録。consumer
- コンシューマー。container
- コンテナー。invokeListener
- リスナーを再起動するためのコールバック。- 戻り値:
- コンシューマーレコード、またはサブセット。
handleOtherException
public void handleOtherException(ExceptionSE thrownException, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, boolean batchListener) インターフェースからコピーされた説明:CommonErrorHandler
利用可能なレコードがない状態で例外がスローされた場合に呼び出されます。コンシューマー投票が例外をスローした場合。- 次で指定:
- インターフェース
CommonErrorHandler
のhandleOtherException
- パラメーター:
thrownException
- 例外。consumer
- コンシューマー。container
- コンテナー。batchListener
- リスナーがバッチリスナーの場合は true。
onPartitionsAssigned
public void onPartitionsAssigned(org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, CollectionSE<org.apache.kafka.common.TopicPartition> partitions, RunnableSE publishPause) インターフェースからコピーされた説明:CommonErrorHandler
パーティションが割り当てられたときに呼び出されます。- 次で指定:
- インターフェース
CommonErrorHandler
のonPartitionsAssigned
- パラメーター:
consumer
- コンシューマー。partitions
- 新しく割り当てられたパーティション。publishPause
- コンシューマーの一時停止イベントを発行するために呼び出されます。