我们正在使用spring kafka streams来处理数据流。我们目前使用的是processing.guarantee: exactly_once配置,以确保它完全符合数据处理的一次性语义。
我们有了一个新的需求,即通过拦截器发出一些元数据。拦截器使用kafka模板向kafka主题发布元数据(主要是略读消息的头部数据)。
将其放在拦截器上的原因是处理流的管道,包括多个应用程序/主题,并且很容易将拦截器连接到单独的应用程序。
我的问题是,我的拦截器中使用的kafka模板是需要@ transaction注解还是使用由processing.gaurantee配置生成的事务语义。当主流消费者/生产者提交失败时,它是否能够回滚数据而不提交?
任何指向这一点的建议都是非常感谢的。
发布于 2021-06-24 02:16:01
KafkaTemplate不能参与流的事务。它将需要一个单独的事务,这将破坏EOS。
只有一次,要么一切都用streams完成,要么一切都用spring-kafka完成。
https://stackoverflow.com/questions/68104032
复制相似问题