如何将预先创建的 Kafka 主题配置为 kafka-connect 中的接收器?

How to configure a pre-created Kafka topic as a sink in kafka-connect?

我正在尝试将 postgreql 数据库(这是源)事件日志下沉到已经创建和配置的主题的 kafka 融合云中。

仅供参考,我使用 quay.io/debezium/connect:1.9 docker 图像作为我的 kafka 连接服务器,一个 aws RDS postgresql 数据库作为源,一个 kafka 融合云主题作为接收器。

我知道属性中有像 CONNECT_TOPIC_CREATION_ENABLE=false = topic.creation.enable: false 这样的参数可以阻止自动创建 kafka 主题(因为它在我的融合云代理中不允许)但是我在哪里指定主题目标名称?

对于 Debezium,主题由服务器、数据库架构和 table 名称的串联决定。

For example, suppose that fulfillment is the logical server name in the configuration for a connector that is capturing changes in a PostgreSQL installation that has a postgres database and an inventory schema that contains four tables: products, products_on_hand, customers, and orders. The connector would stream records to these four Kafka topics:

  • fulfillment.inventory.products
  • fulfillment.inventory.products_on_hand
  • fulfillment.inventory.customers
  • fulfillment.inventory.orders

https://debezium.io/documentation/reference/stable/connectors/postgresql.html#postgresql-topic-names

要进一步操作来自连接器的主题名称,您可以使用 RegexRouter 转换。例如,如果您想从每个主题中删除逻辑服务器名称“prefix”,或者只直接提取 table 名称。您还可以根据需要使用静态值完全覆盖主题名称。


CONNECT_TOPIC_CREATION_ENABLE 与 Debezium 没有直接关系。它是 Kafka Connect 的通用 属性。

Whether to allow automatic creation of topics used by source connectors, when source connectors are configured with topic.creation. properties

https://kafka.apache.org/documentation/#connectconfigs_topic.creation.enable