如何在消费者应用程序中获取自动配置的 kafkaTransactionManager
How to get autoconfigured kafkaTransactionManager in a consumer app
KafkaAutoConfiguration 只有在设置了“spring.kafka.producer.transaction-id-prefix”属性 时才会配置 kafkaTransactionManager
bean。
在仅使用主题数据且没有任何生产者逻辑的应用程序中设置此 属性 以获取此自动配置的 bean 是否可以?
我将在我的消费者应用程序中实施 1pc 尽力而为模式,因此我需要在上下文中同时拥有 kafkaTransactionManager
和 JpaTransactionManager
才能将它们与 @Transactional
注释一起使用.
如果你不使用生产者端,那么你不需要这个KafkaTransactionManager
。只需将 JpaTransactionManager
注入 ContainerProperties
:
/**
* Set the transaction manager to start a transaction; offsets are committed with
* semantics equivalent to {@link AckMode#RECORD} and {@link AckMode#BATCH} depending
* on the listener type (record or batch).
* @param transactionManager the transaction manager.
* @since 1.3
* @see #setAckMode(AckMode)
*/
public void setTransactionManager(@Nullable PlatformTransactionManager transactionManager) {
KafkaAutoConfiguration 只有在设置了“spring.kafka.producer.transaction-id-prefix”属性 时才会配置 kafkaTransactionManager
bean。
在仅使用主题数据且没有任何生产者逻辑的应用程序中设置此 属性 以获取此自动配置的 bean 是否可以?
我将在我的消费者应用程序中实施 1pc 尽力而为模式,因此我需要在上下文中同时拥有 kafkaTransactionManager
和 JpaTransactionManager
才能将它们与 @Transactional
注释一起使用.
如果你不使用生产者端,那么你不需要这个KafkaTransactionManager
。只需将 JpaTransactionManager
注入 ContainerProperties
:
/**
* Set the transaction manager to start a transaction; offsets are committed with
* semantics equivalent to {@link AckMode#RECORD} and {@link AckMode#BATCH} depending
* on the listener type (record or batch).
* @param transactionManager the transaction manager.
* @since 1.3
* @see #setAckMode(AckMode)
*/
public void setTransactionManager(@Nullable PlatformTransactionManager transactionManager) {