Kafka Connect JDBC Sink - pk.fields для каждой темы (таблицы) в одной конфигурации приемника - PullRequest
0 голосов
/ 30 января 2019

В отношении этого примера пример с debezium

У меня есть несколько тем с разными первичными ключами

item (pk : id)
itemDetail (pk :id, itemId)
itemLocation (pk :id, itemId)

jdbc-sink.source

{
"name": "jdbc-sink",
"config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "tasks.max": "1",
    "topics": "item,itemDetail,itemLocation",
    "connection.url": "jdbc:postgresql://postgres:5432/inventory?user=postgresuser&password=postgrespw",
    "transforms": "unwrap",
    "transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
    "auto.create": "true",
    "insert.mode": "upsert",
    "pk.fields": "id",
    "pk.mode": "record_value"
}
}

как мы можем указать "pk.fields" для каждой темы (таблицы)?

1 Ответ

0 голосов
/ 31 января 2019

Я не думаю, что есть такая конфигурация для сопоставления PK по теме.

Вы захотите сделать несколько конфигов для каждой темы

{
"name": "jdbc-sink-item",
"config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "tasks.max": "1",
    "topics": "item",
    "pk.fields": "id",

И

{
"name": "jdbc-sink-itemDetail",
"config": {
    "connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
    "tasks.max": "1",
    "topics": "itemDetail",
    "pk.fields": "id,itemId",

И так далее

...