在Apache Kafka JDBC中设置表/主题顺序



有两个主题,source_topic.asource_topic.bsource_topic.aresource_topic.b有依赖关系(例如,需要先接收ource_topic\b(。为了注意接收过程,需要先从source_topic.b接收数据,然后从source_topic.a进行接收。有什么方法可以在源/接收配置中设置主题/表的顺序吗?

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

源配置

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接收器连接器不支持这种逻辑。

你正在将批处理思维应用于流世界:(想想:卡夫卡怎么会知道它有";成品";下沉topic_a?溪流是无限的,所以你最终不得不说这样的话:如果你在给定的时间窗口内没有收到更多的消息,那么假设你已经从这个主题中提取完数据,然后进入下一个主题";。

您最好在Kafka本身中对数据进行必要的连接(例如,使用Kafka Streams或ksqlDB(,然后将结果写回一个新的Kafka主题,然后将其放入数据库。

最新更新