Debezium может создать недопустимую схему

У меня проблема с Avro и реестром схем. После того, как Debezium создал схему и тему, я загрузил схему из реестра схем. Я помещаю его в файл .asvc, и он выглядит так:

  {
    "type": "record",
    "name": "Envelope",
    "namespace": "my.namespace",
    "fields": [
      {
        "name": "before",
        "type": [
          "null",
          {
            "type": "record",
            "name": "MyValue",
            "fields": [
              {
                "name": "id",
                "type": "int"
              }
            ]
          }
        ],
        "default": null
      },
      {
        "name": "after",
        "type": [
          "null",
          "MyValue"
        ],
        "default": null
      }
    ]
  }

Я провел два эксперимента:

  1. Я попытался вернуть его в реестр схемы, но получаю следующую ошибку: MyValue неверно. Когда я удаляю запись «после», схема работает нормально.

  2. Я использовал "generate-sources" из avro-maven-plugin для создания классов Java. Когда я пытаюсь использовать вышеупомянутую тему, я вижу такую ​​ошибку:

    Исключение в потоке «b2-StreamThread-1» org.apache.kafka.streams.errors.StreamsException: исключение перехвачено в процессе. [...]: Ошибка регистрации схемы Avro: [...]

    Вызвано: io.confluent.kafka.schemaregistry.client.rest.exceptions.RestClientException: регистрируемая схема несовместима с более ранней схемой; код ошибки: 409

Кто-нибудь сталкивался с такой же проблемой? Это Debezium создает недопустимую схему или в реестре схем есть ошибка?


person user3429660    schedule 18.12.2019    source источник


Ответы (1)


MyValue неверно.

Это не тип Avro. Вам нужно будет встроить фактическую запись в объединение, как и предыдущее значение

Другими словами, вы не можете ссылаться на типы записей в схеме, AFAIK

Когда я пытаюсь использовать вышеупомянутую тему, я вижу такую ​​ошибку:

Потребитель не регистрирует схемы, поэтому неясно, как вы получаете эту ошибку, если только, возможно, не используете Kafka Streams, который создает промежуточные темы

person OneCricketeer    schedule 28.12.2019