在春季kafka文档中https://docs.spring.io/spring-kafka/docs/2.3.3.RELEASE/reference/html/#transactions
它提到;
通过向DefaultKafkaProducerFactory提供transactionIdPrefix来启用事务。在这种情况下,工厂维护事务生产者的缓存,而不是管理单个共享生产者。当用户对生产者调用close((时,它会返回到缓存中进行重用,而不是实际关闭。每个生产者的transactional.id属性为transactionIdPrefix+n
- 如何配置此缓存,例如生产者池大小
- 当给定事务的缓存中没有任何可用的生产者时,它是否会动态创建一个新的生产者
这取决于事务是否仅为生产者,以及默认情况下为true
的producerPerConsumerPartition
(对于消费者发起的事务(。
此属性用于支持EOSMode.ALPHA
(或在使用BETA但代理版本早于2.5时回退到ALPHA(。
请参阅此处,以获取有关精确一次语义的更多信息。
当使用producerPerConsumerPartition=false
并且仅用于生产者事务时,缓存大小没有限制;当高速缓存为空时创建新的生产者;关闭";。