このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring for Apache Kafka 4.0.5 を使用してください!

新着情報

4.0 以降の 4.1 の新機能

このセクションでは、バージョン 4.0 からバージョン 4.1 への変更点について説明します。以前のバージョンの変更点については、変更履歴を参照してください。

@KafkaListener の変更

@KafkaListener アノテーションは、ackMode 属性をサポートするようになりました。これにより、個別のリスナーは、個別のコンテナーファクトリ Bean を作成することなく、コンテナーファクトリのデフォルトの確認モードをオーバーライドできます。この属性は、SpEL 式とプロパティプレースホルダーもサポートしています。詳細については、@KafkaListener アノテーションを参照してください。

コンシューマーの認知度を高める方法

ContainerProperties のブール型プロパティ setExplicitShareAcknowledgment(boolean) は、ShareAckMode 列挙型 (EXPLICITMANUALIMPLICIT) に置き換えられました。非推奨のメソッドは引き続き機能します。true は MANUAL に、false は EXPLICIT にマッピングされます。デフォルトの動作は変更されていません。デフォルトを使用するアプリケーションは移行する必要はありません。モードの説明については記録確認を、アップグレードの詳細については Migration from 4.0 を参照してください。

コンシューマーの非同期コミットを共有する

ContainerProperties の新しいプロパティ syncShareCommits は、共有コンテナーが確認応答コミットに commitSync() (デフォルト) または commitAsync() のどちらを使用するかを制御します。確認応答の耐久性に若干の遅延が許容される場合は、スループットを向上させるために false に設定してください。詳細は Synchronous vs Asynchronous Commits を参照してください。

コンシューマーエラー処理を共有する

共有コンシューマーコンテナーに、設定可能なエラー処理機能が追加されました。

  • Poll-levelpoll() からの RecordDeserializationException と CorruptRecordException が捕捉されるため、コンシューマースレッドは続行されます。逆直列化できないレコードは拒否され、次のポーリングが実行されます。

  • Listener-levelShareConsumerRecordRecoverer インターフェースは、リスナーが例外をスローした際に、ACCEPT、RELEASE、REJECT のいずれを実行するかを決定します。デフォルトは ShareConsumerRecordRecoverer.REJECTING ですが、RELEASING も利用可能です。ファクトリまたはコンテナーにカスタムリカバリを設定することもできます。

  • Kafka キューのドキュメントにある Share consumer error handling を参照してください。

コンシューマーライフサイクルイベントを共有する

ShareKafkaMessageListenerContainer は、ConsumerStartingEvent および ConsumerStartedEvent に加えて、停止および障害ライフサイクルイベントを公開するようになりました。

  • ShareConsumerStoppingEvent (新規): 基盤となる ShareConsumer が閉じられる前に公開されたため、新しいイベントクラスが導入されました。ShareConsumer は Consumer とは別のクライアント API であるため、既存の ConsumerStoppingEvent は再利用できません。

  • ConsumerStoppedEvent: 株式コンシューマーが閉鎖された後に公開され、reason は NORMALABNORMALERROR です。

  • ConsumerFailedToStartEvent: 共有コンシューマーの起動に失敗した場合に公開されます。同じ起動試行ですでに構築されたコンシューマーは、静かに閉じられます。

詳細はライフサイクルイベントを参照してください。

ShareAcknowledgment.renew()

ShareAcknowledgment は、処理時間がブローカーのロック期間を超えた場合に、renew() が取得ロックを延長する機能をサポートするようになりました(KIP-1222、Kafka 4.2)。詳細は、Kafka キューのドキュメントにある ShareAcknowledgment API を参照してください。

RetryTopicConfigurationBuilder Default Strategy Change

The default value of sameIntervalTopicReuseStrategy in RetryTopicConfigurationBuilder has been changed from MULTIPLE_TOPICS to SINGLE_TOPIC to align with the @RetryableTopic annotation default. See トピックの命名 for more information.

Kafka Streams Native DLQ Support

Spring for Apache Kafka now provides exception handlers that support Kafka Streams DLQ (KIP-1034, Kafka 4.2):

The provided exception handlers support multiple Kafka Streams DLQ enabling strategies and dead-letter topic resolution options:

RecoveringDeserializationExceptionHandler.KSTREAM_DESERIALIZATION_RECOVERER has been deprecated in favor of RecoveringDeserializationExceptionHandler.RECOVERER to align with the new handlers properties.

Kafka Streams Group Protocol Configuration

The StreamsBuilderFactoryBean now supports configuring the groupProtocol property. This allows you to explicitly manage whether the underlying Kafka Streams consumers rely on the classic protocol or opt into the newer streams group protocol (KIP-1071: Server-side rebalance for Streams).

See 構成 in the Kafka Streams documentation for more details.