Class KafkaTransactionManager<K,V>
- Type Parameters:
K- the key type.V- the value type.
- All Implemented Interfaces:
Serializable,KafkaAwareTransactionManager<K,,V> org.springframework.transaction.PlatformTransactionManager,org.springframework.transaction.TransactionManager
PlatformTransactionManager implementation for a
single Kafka ProducerFactory. Binds a Kafka producer from the specified
ProducerFactory to the thread, potentially allowing for one thread-bound producer per
ProducerFactory.
This local strategy is an alternative to executing Kafka operations within, and synchronized with, external transactions. This strategy is not able to provide XA transactions, for example in order to share transactions between messaging and database access.
Application code is required to retrieve the transactional Kafka resources via
ProducerFactoryUtils.getTransactionalResourceHolder(ProducerFactory, String, java.time.Duration).
Spring's KafkaTemplate will auto
detect a thread-bound Producer and automatically participate in it.
The use of DefaultKafkaProducerFactory as a target for this transaction manager is strongly
recommended. Because it caches producers for reuse.
Transaction synchronization is turned off by default, as this manager might be used alongside a datastore-based Spring transaction manager such as the JDBC org.springframework.jdbc.datasource.DataSourceTransactionManager, which has stronger needs for synchronization.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager
org.springframework.transaction.support.AbstractPlatformTransactionManager.SuspendedResourcesHolder -
Field Summary
Fields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION -
Constructor Summary
ConstructorsConstructorDescriptionKafkaTransactionManager(ProducerFactory<K, V> producerFactory) Create a new KafkaTransactionManager, given a ProducerFactory. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voiddoCleanupAfterCompletion(Object transaction) protected voiddoCommit(org.springframework.transaction.support.DefaultTransactionStatus status) protected Objectprotected voidprotected voiddoRollback(org.springframework.transaction.support.DefaultTransactionStatus status) protected voiddoSetRollbackOnly(org.springframework.transaction.support.DefaultTransactionStatus status) protected ObjectGet the producer factory.protected booleanisExistingTransaction(Object transaction) voidsetCloseTimeout(Duration closeTimeout) Set the maximum time to wait when closing a producer; default 5 seconds.voidsetTransactionIdPrefix(String transactionIdPrefix) Set a transaction id prefix to override the prefix in the producer factory.Methods inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager
commit, determineTimeout, getDefaultTimeout, getTransaction, getTransactionSynchronization, invokeAfterCompletion, isFailEarlyOnGlobalRollbackOnly, isGlobalRollbackOnParticipationFailure, isNestedTransactionAllowed, isRollbackOnCommitFailure, isValidateExistingTransaction, newTransactionStatus, prepareForCommit, prepareSynchronization, prepareTransactionStatus, registerAfterCompletionWithExistingTransaction, resume, rollback, setDefaultTimeout, setFailEarlyOnGlobalRollbackOnly, setGlobalRollbackOnParticipationFailure, setNestedTransactionAllowed, setRollbackOnCommitFailure, setTransactionSynchronization, setTransactionSynchronizationName, setValidateExistingTransaction, shouldCommitOnGlobalRollbackOnly, suspend, triggerBeforeCommit, triggerBeforeCompletion, useSavepointForNestedTransactionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.transaction.PlatformTransactionManager
commit, getTransaction, rollback
-
Constructor Details
-
KafkaTransactionManager
Create a new KafkaTransactionManager, given a ProducerFactory. Transaction synchronization is turned off by default, as this manager might be used alongside a datastore-based Spring transaction manager like DataSourceTransactionManager, which has stronger needs for synchronization. Only one manager is allowed to drive synchronization at any point of time.- Parameters:
producerFactory- the ProducerFactory to use
-
-
Method Details
-
setTransactionIdPrefix
Set a transaction id prefix to override the prefix in the producer factory.- Parameters:
transactionIdPrefix- the prefix.- Since:
- 2.3
-
getProducerFactory
Get the producer factory.- Specified by:
getProducerFactoryin interfaceKafkaAwareTransactionManager<K,V> - Returns:
- the producerFactory
-
setCloseTimeout
Set the maximum time to wait when closing a producer; default 5 seconds.- Parameters:
closeTimeout- the close timeout.- Since:
- 2.1.14
-
doGetTransaction
- Specified by:
doGetTransactionin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
isExistingTransaction
- Overrides:
isExistingTransactionin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doBegin
protected void doBegin(Object transaction, org.springframework.transaction.TransactionDefinition definition) - Specified by:
doBeginin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doSuspend
- Overrides:
doSuspendin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doResume
- Overrides:
doResumein classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doCommit
protected void doCommit(org.springframework.transaction.support.DefaultTransactionStatus status) - Specified by:
doCommitin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doRollback
protected void doRollback(org.springframework.transaction.support.DefaultTransactionStatus status) - Specified by:
doRollbackin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doSetRollbackOnly
protected void doSetRollbackOnly(org.springframework.transaction.support.DefaultTransactionStatus status) - Overrides:
doSetRollbackOnlyin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-
doCleanupAfterCompletion
- Overrides:
doCleanupAfterCompletionin classorg.springframework.transaction.support.AbstractPlatformTransactionManager
-