如何在消费者应用程序中获取自动配置的 kafkaTransactionManager

How to get autoconfigured kafkaTransactionManager in a consumer app

KafkaAutoConfiguration 只有在设置了“spring.kafka.producer.transaction-id-prefix”属性 时才会配置 kafkaTransactionManager bean。

在仅使用主题数据且没有任何生产者逻辑的应用程序中设置此 属性 以获取此自动配置的 bean 是否可以?

我将在我的消费者应用程序中实施 1pc 尽力而为模式,因此我需要在上下文中同时拥有 kafkaTransactionManagerJpaTransactionManager 才能将它们与 @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) {