繁体   English   中英

如何在 Spring Cloud Stream 中同时具有消费者和生产者事务的应用程序中设置事务 ID 前缀

[英]How to set transaction-id-prefix in app which has both consumer and producer-only transactions in Spring Cloud Stream

对于已由侦听器容器启动的事务,我们需要为所有应用程序实例设置相同的事务 ID 前缀。 对于仅生产事务,我们需要为每个实例设置不同的值。

我在具有两种事务类型的应用程序中使用 Spring Cloud Stream Kafka Binder,并且属性spring.cloud.stream.kafka.binder.transaction.transaction-id-prefix用于创建通用事务管理器。

我想知道如何使这一切正常工作,因为您似乎不能同时拥有这两种方式。

如果您的代理是 2.5 或更高版本并且您正在使用当前支持的 spring-cloud-stream (3.2.x) 和 spring-kafka (2.8.x) 版本,则不再需要该要求。

即使是消费者发起的交易,您现在也必须使用唯一前缀。

如果您使用的是较旧的 broker 或默认不使用 EOSMode V2 (BETA) 的不受支持的 spring-kafka 版本,则可以配置两个 binder。

https://docs.spring.io/spring-kafka/docs/current/reference/html/#transaction-id-prefix

这个问题(transactional.id 的不同规则)在使用 EOSMode.BETA 时已经消除(代理版本 >= 2.5); 请参阅 Exactly Once 语义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM