手動でオフセットをコミットする

通常、AckMode.MANUAL または AckMode.MANUAL_IMMEDIATE を使用する場合、Kafka は各レコードの状態を維持せず、各グループ / パーティションのコミットされたオフセットのみを維持するため、確認応答を順番に確認する必要があります。バージョン 2.8 以降、コンテナープロパティ asyncAcks を設定できるようになりました。これにより、ポーリングによって返されたレコードの確認応答を任意の順序で確認応答できます。リスナーコンテナーは、欠落している確認応答が受信されるまで、順不同のコミットを延期します。前のポーリングのすべてのオフセットがコミットされるまで、コンシューマーは一時停止されます(新しいレコードは配信されません)。

この機能により、アプリケーションはレコードを非同期で処理できますが、障害後に重複配信される可能性が高くなることを理解しておく必要があります。
asyncAcks がアクティブな場合、オフセットのコミットのときに nack() (否定応答) を使用することはできません。