KafkaConnect создает событие CDC со значением NULL при чтении из mongoDB с помощью дебезия - PullRequest
0 голосов
/ 12 апреля 2019

При чтении темы kafka, которая содержит множество событий CDC, созданных Kafka-Connect с использованием debezium, а источник данных находится в коллекции mongodb с TTL, я увидел, что некоторые события CDC являются нулевыми, между событиями удаления. что это на самом деле означает?

Как я понимаю, все события CDC должны иметь структуру событий CDC, даже события удаления, почему существуют события с нулевым значением?

null,
{
  "after": null,
  "patch": null,
  "source": {
    "version": "0.9.3.Final",
    "connector": "mongodb",
    "name": "test",
    "rs": "rs1",
    "ns": "testestest",
    "sec": 1555060472,
    "ord": 297,
    "h": 1196279425766381600,
    "initsync": false
  },
  "op": "d",
  "ts_ms": 1555060472177
},
null,
{
  "after": null,
  "patch": null,
  "source": {
    "version": "0.9.3.Final",
    "connector": "mongodb",
    "name": "test",
    "rs": "rs1",
    "ns": "testestest",
    "sec": 1555060472,
    "ord": 298,
    "h": -2199232943406075600,
    "initsync": false
  },
  "op": "d",
  "ts_ms": 1555060472177
}

Я использую https://debezium.io/docs/connectors/mongodb/ без сглаживания какого-либо события и использую конфигурацию следующим образом:

{   
    "connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
    "mongodb.hosts": "live.xxx.xxx:27019",
    "mongodb.name": "testmongodb",
    "collection.whitelist": "testest",
    "tasks.max": 4,
    "snapshot.mode": "never",
    "poll.interval.ms": 15000
}

1 Ответ

2 голосов
/ 15 апреля 2019

Это так называемые надгробные события, используемые для правильного составления удаленных событий - см. https://kafka.apache.org/documentation/#compaction

Сжатие также позволяет удалять. Сообщение с ключом и нулевой полезной нагрузкой будет считаться удалением из журнала. Этот маркер удаления приведет к удалению любого предыдущего сообщения с этим ключом (как и любого нового сообщения с этим ключом), но маркеры удаления отличаются тем, что через некоторое время они сами будут удалены из журнала, чтобы освободить место. , Момент времени, в который удаление больше не сохраняется, помечается как «точка сохранения удаления» на приведенной выше диаграмме.

...