Hi! 如果 statement set 已经包含了多个 insert 语句,那么写入 kafka 表和写入 db 应该是在同一个作业里进行的。如果写入 db 失败,那么产生的 exception 应该会让作业失败才对。这里 db 写入失败但 kafka 依旧写入是什么样的现象?
另外其实可以考虑分成两个作业,第一个作业将数据写入 db,第二个作业从 db 读出数据写入 kafka。关于捕获 db 数据的变化,可以看一下 Flink CDC connector[1] [1] https://github.com/ververica/flink-cdc-connectors 悟空 <wukon...@foxmail.com> 于2021年8月26日周四 下午12:52写道: > 能否详细说下呢,statement set[1] 是什么意思, 我是通过StatementSet.addInsertSql 将多个sql > 加入的,然后执行execute()方法 > > > > > ------------------ 原始邮件 ------------------ > 发件人: > "user-zh" > < > fskm...@gmail.com>; > 发送时间: 2021年8月26日(星期四) 中午12:36 > 收件人: "user-zh"<user-zh@flink.apache.org>; > > 主题: Re: 基于flink 1.12 如何通过Flink SQL 实现 多sink端 在同一个事务中 > > > > 说的是 statement set [1] 吗 ? > > [1] > > https://ci.apache.org/projects/flink/flink-docs-master/docs/dev/table/sqlclient/#execute-a-set-of-sql-statements > > 悟空 <wukon...@foxmail.com> 于2021年8月26日周四 上午11:33写道: > > > hi all:&nbsp; > > &nbsp; &nbsp; 我目前基于flink 1.12 sql 来开发功能, 目前遇到一个问题, 我现在想实现 > 在一个事务里 先将kafka > > 源的数据写入到一张msyql 表中, 写入成功后再写入一张kafka的表里。如果写入db失败,则不写入kafka 。 > > &nbsp; &nbsp;语句类似这种: > > &nbsp; &nbsp;insert into db_table_sink&nbsp;select * > from&nbsp; > > kafka_source_table; > > &nbsp; &nbsp;insert into kafka_table_sink select * from > kafka_source_table; > > > > > > &nbsp; 请问flink SQL 有实现方式吗? 目前经过测试,发现如果db写入失败,但是kafka依旧写入,同时flink > 程序没有挂掉。