смена названия темы кафки без смены потребителей - PullRequest
0 голосов
/ 17 апреля 2019

Мы планируем удалить версии из названий тем kafka.В настоящее время версия схемы соответствующего сообщения является частью названия темы.Но в будущем у нас будет большое количество небольших вариантов сообщений, и мы не хотим создавать слишком много тем.Но уже есть много потребителей на эти темы.Мы не хотим, чтобы все эти темы вносили изменения (все равно следует пытаться использовать тему с номером версии).Как этого достичь?Существуют ли какие-либо инструменты (например, AVRO), которые могут помочь достичь этого?Кто-нибудь сталкивался с подобной проблемой.И второй вопрос - как потребитель может дифференцировать сообщения с небольшими изменениями в структуре, приходящими в одну и ту же тему.

1 Ответ

1 голос
/ 17 апреля 2019

Если я правильно понял, я бы предложил:

  • относительно первого вопроса:
pattern = Pattern.compile("topic_name_without_schema_version.*");
kafkaConsumer.subscribe(pattern, new ConsumerRebalanceListener());
  • относительно второго: какого рода дифференциации вы хотели бы достичь? В случае, если вы просто хотите узнать, является ли текущее сообщение несовместимым с последней схемой Avro, вы можете просто попытаться преобразовать текущее сообщение и перехватить исключение (если оно есть), или вы можете сгенерировать схему Avro на основе текущего сообщения и проверить равенство двух схем
...