在ApacheKafka JDBC中设置表/主题顺序

在ApacheKafka JDBC中设置表/主题顺序,jdbc,apache-kafka,apache-kafka-connect,Jdbc,Apache Kafka,Apache Kafka Connect,有两个主题,源主题.a,源主题.b。 source\u topic.a与source\u topic.b有依赖关系(例如需要先下沉source\u topic.b)。为了记录接收过程,需要先从源主题.b接收数据,然后从源主题.a接收数据。有没有办法在源/接收器配置中设置主题/表的顺序 以下是使用的配置,有多个表和主题。时间戳用于每次轮询表时更新表的模式。和timestamp.initial将值设置为特定的时间戳 源配置 name=jdbc-mssql-prod-5 connector.class

有两个主题,源主题.a源主题.bsource\u topic.asource\u topic.b有依赖关系(例如需要先下沉source\u topic.b)。为了记录接收过程,需要先从源主题.b接收数据,然后从源主题.a接收数据。有没有办法在源/接收器配置中设置主题/表的顺序

以下是使用的配置,有多个表和主题。时间戳用于每次轮询表时更新表的模式。和timestamp.initial将值设置为特定的时间戳

源配置

name=jdbc-mssql-prod-5
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
connection.url=jdbc:sqlserver:
connection.user=
connection.password=
topic.prefix= source_topic.
mode=timestamp
table.whitelist=A,B,C
timestamp.column.name=ModifiedDateTime

connection.backoff.ms=60000
connection.attempts=300

validate.non.null= false
# enter timestamp in milliseconds 
timestamp.initial= 1604977200000 
name=mysql-sink-prod-5
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
tasks.max=1
topics= sink_topic_a, sink_topic_b
connection.url=jdbc:mysql:
connection.user=
connection.password=

insert.mode=upsert
delete.enabled=true
pk.mode=record_key


errors.log.enable= true
errors.log.include.messages=true
接收器配置

name=jdbc-mssql-prod-5
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
connection.url=jdbc:sqlserver:
connection.user=
connection.password=
topic.prefix= source_topic.
mode=timestamp
table.whitelist=A,B,C
timestamp.column.name=ModifiedDateTime

connection.backoff.ms=60000
connection.attempts=300

validate.non.null= false
# enter timestamp in milliseconds 
timestamp.initial= 1604977200000 
name=mysql-sink-prod-5
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
tasks.max=1
topics= sink_topic_a, sink_topic_b
connection.url=jdbc:mysql:
connection.user=
connection.password=

insert.mode=upsert
delete.enabled=true
pk.mode=record_key


errors.log.enable= true
errors.log.include.messages=true

不,JDBC接收器连接器不支持这种逻辑

您正在将批处理思维应用到streams世界:)考虑:卡夫卡如何知道它已经“完成”了下沉
主题a
?流是无限的,因此您最终不得不说“如果您在给定的时间窗口内没有收到任何消息,那么假设您已经从这个主题中提取完数据,然后转到下一个主题”

您最好在卡夫卡本身内进行必要的数据连接(例如,使用卡夫卡流或ksqlDB),然后将结果写回新的卡夫卡主题,然后将其放入数据库