我作为代理和debezium迁移到kafka,从所有的微服务获取数据(etl数据)到报告和搜索数据库。是否有任何方法可以配置debezium,以便它根据自定义条件(如用户或公司或行/数据的某个关键列/属性)将数据放在不同的主题上。
sigwle7e1#
不确定您是否正在寻找主题路由假设您不能为debezium本身添加一个filter选项,典型的模式是使用kafka streams、ksql(或基于您前面的问题的flink),将您感兴趣的数据过滤并分发到下游消费者需要的不同主题中。但是,从单个debezium配置中,必须硬编码名称空间/集合/表。对于其中的多个,您将需要多个配置。
x7yiwoj42#
hi@gunnar对于类似的需求,是否可以根据条件将消息从debezium发送到不同的主题(单个/多个)。例如:对于表a事件到主题a,对于表b事件到主题b1,对于表c事件到主题c1,c2和主题b1等,在源连接器或regex连接器中,只有在org.apache.kafka.connect.connector.connectrecord类中设置一个主题名的选项。有没有办法设置多个主题。如前所述,根据一些业务逻辑将一个事件发送到不同的主题。
ghhkc1vu3#
我建议实现一个定制的smt(单消息转换),它将debezium连接器生成的记录路由到正确的主题中。您可以以cricket_的答案中链接的debezium路由smt作为定制实现的示例。拥有 SourceRecord 可用时,您可以基于所有捕获表的列值来决定目标主题。Kafka流或类似的工作,但我建议首先研究SMT由于易于操作(没有单独的过程需要),只有寻找替代品,如果SMT是不够的。
SourceRecord
3条答案
按热度按时间sigwle7e1#
不确定您是否正在寻找主题路由
假设您不能为debezium本身添加一个filter选项,典型的模式是使用kafka streams、ksql(或基于您前面的问题的flink),将您感兴趣的数据过滤并分发到下游消费者需要的不同主题中。
但是,从单个debezium配置中,必须硬编码名称空间/集合/表。对于其中的多个,您将需要多个配置。
x7yiwoj42#
hi@gunnar对于类似的需求,是否可以根据条件将消息从debezium发送到不同的主题(单个/多个)。例如:对于表a事件到主题a,对于表b事件到主题b1,对于表c事件到主题c1,c2和主题b1等,在源连接器或regex连接器中,只有在org.apache.kafka.connect.connector.connectrecord类中设置一个主题名的选项。有没有办法设置多个主题。如前所述,根据一些业务逻辑将一个事件发送到不同的主题。
ghhkc1vu3#
我建议实现一个定制的smt(单消息转换),它将debezium连接器生成的记录路由到正确的主题中。您可以以cricket_的答案中链接的debezium路由smt作为定制实现的示例。拥有
SourceRecord
可用时,您可以基于所有捕获表的列值来决定目标主题。Kafka流或类似的工作,但我建议首先研究SMT由于易于操作(没有单独的过程需要),只有寻找替代品,如果SMT是不够的。