クラス KafkaTransactionManager<K,V>

java.lang.ObjectSE
org.springframework.transaction.support.AbstractPlatformTransactionManager
org.springframework.kafka.transaction.KafkaTransactionManager<K,V>
型パラメーター:
K - 鍵の型。
V - 値の型。
実装されたすべてのインターフェース:
SerializableSEKafkaAwareTransactionManager<K,V>ConfigurableTransactionManagerPlatformTransactionManagerTransactionManager

public class KafkaTransactionManager<K,V> extends AbstractPlatformTransactionManager implements KafkaAwareTransactionManager<K,V>
単一の Kafka ProducerFactoryPlatformTransactionManager 実装。指定された ProducerFactory から Kafka プロデューサーをスレッドにバインドし、ProducerFactory ごとに 1 つのスレッドにバインドされたプロデューサーを潜在的に許可します。

このローカル戦略は、外部トランザクション内で Kafka 操作を実行し、外部トランザクションと同期する代わりになります。この戦略では、たとえばメッセージングとデータベースアクセス間でトランザクションを共有するために、XA トランザクションを提供することはできません。

ProducerFactoryUtils.getTransactionalResourceHolder(ProducerFactory, String, java.time.Duration) を介してトランザクション Kafka リソースを取得するには、アプリケーションコードが必要です。Spring の KafkaTemplate は、スレッドにバインドされたプロデューサーを自動検出し、自動的にそれに参加します。

このトランザクションマネージャーのターゲットとして DefaultKafkaProducerFactory を使用することを強くお勧めします。それは再利用のためにプロデューサーをキャッシュするからです。

トランザクション同期は、同期の必要性が高い JDBC org.springframework.jdbc.datasource.DataSourceTransactionManager などのデータストアベースの Spring トランザクションマネージャーと一緒に使用される可能性があるため、デフォルトではオフになっています。

作成者:
Gary Russell
関連事項: