изменение названия темы кафка без изменения потребителей

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


person Sammy Pawar    schedule 17.04.2019    source источник


Ответы (1)


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

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