连接到 kafka(3 个代理)的多个 spring 引导 consumer/produces 应用程序的 TransactionIdPrefix 应该是什么)
What should be the TransactionIdPrefix for multiple spring boot consumer/produces apps which are connected to kafka (3 brokers))
我有多个 spring 连接到 kafka 的引导应用程序(与 3 个代理集群)并且我还集成了事务同步(chainedKafkaTransactionManager)。所以我想知道我应该在 kafka 配置中为所有多个应用程序或不同的应用程序提供相同的 TransactionIdPrefix 值。
我尝试为每个应用程序提供一个随机生成的 TransactionIdPrefix。但我认为在 Listeners 方法的多线程环境中的某个时候,它将从数据库(jpa 存储库)中获取旧数据
是因为不同的 TransactionIdPrefix 造成的问题吗?
视情况而定;如果它们是同一个应用程序的多个实例并且事务由消费者启动,则前缀必须相同,以便在重新平衡后分区从一个实例移动到另一个实例时正确处理僵尸防护。
如果交易是由生产者发起的,前缀在每个实例中必须是唯一的。
如果它们是不同的应用程序,它们应该有不同的前缀,而不管事务是什么启动的。
我有多个 spring 连接到 kafka 的引导应用程序(与 3 个代理集群)并且我还集成了事务同步(chainedKafkaTransactionManager)。所以我想知道我应该在 kafka 配置中为所有多个应用程序或不同的应用程序提供相同的 TransactionIdPrefix 值。
我尝试为每个应用程序提供一个随机生成的 TransactionIdPrefix。但我认为在 Listeners 方法的多线程环境中的某个时候,它将从数据库(jpa 存储库)中获取旧数据 是因为不同的 TransactionIdPrefix 造成的问题吗?
视情况而定;如果它们是同一个应用程序的多个实例并且事务由消费者启动,则前缀必须相同,以便在重新平衡后分区从一个实例移动到另一个实例时正确处理僵尸防护。
如果交易是由生产者发起的,前缀在每个实例中必须是唯一的。
如果它们是不同的应用程序,它们应该有不同的前缀,而不管事务是什么启动的。