Camel 中对 Kafka 生产者/消费者的事务支持

问题描述 投票:0回答:0

我的目标是构建一个交易骆驼路线,涉及:

  1. JMS->DB->KafkaProducer

  2. KafkaConsumer->DB->JMS

从相关的JIRA和Camel文档中,我可以看到Camel 3.17.0提供了对Kafka消费者和生产者的事务支持

所以,我测试了如下的路线,令我惊讶的是,我发现交易部分按预期工作。

from(JMS:queue1)
//transaction policy doesn't include Kafka Txn manager
.transacted("custom_policy_with_JMS_&_DB_Txn_Managers)
.to(DB:url)
.to(Kafka:topic) // Kafka endpoint is transaction enabled
.end()

我无法完全理解这在后台是如何工作的。 这种方法是否正确,因为除了添加几个属性以使其具有事务性之外,我没有专门为 Kafka 做任何事情。

我的问题是:

  1. 即使我没有在链式事务策略中包含 Kafka 事务管理器(仅包含 JMS 和 DB Txn 管理器),事务处理也没有任何问题。这是预期的用法吗?

  2. 如果支持 XA 的其余事务处理资源(JMS 和 DB)会怎样? Kafka 的提交和回滚是否仍然与它们协同工作?

  3. 我看到这种支持仅适用于 Kafka 生产者,我如何才能为消费者实现相同的交易保证?我看不到任何启用消费者交易的选项。我仍然应该通过手动提交和回滚来处理它还是有更好的方法?

apache-camel spring-camel
© www.soinside.com 2019 - 2024. All rights reserved.