在不改变消费者的情况下改变kafka主题名称

kafka topic name change without changing consumers

我们计划从 kafka 主题名称中删除版本。当前,相关消息的模式版本构成了主题名称的一部分。但将来我们会有大量的消息小变体,我们不想创建太多主题。但是这些主题已经有很多消费者。我们不希望所有这些主题都进行更改(仍应尝试使用带有版本号的主题)。如何实现?是否有任何工具(例如 AVRO)可以帮助实现这一目标?有没有人遇到过类似的问题。第二个问题 - 消费者如何区分同一主题的结构发生微小变化的消息。

如果我理解正确我会建议:

  • 关于第一个问题:
pattern = Pattern.compile("topic_name_without_schema_version.*");
kafkaConsumer.subscribe(pattern, new ConsumerRebalanceListener());
  • 关于第二个:你想实现什么样的差异化?如果您只想知道当前消息是否与最新的 Avro Schema 不兼容,您可以尝试转换当前消息并捕获异常(如果有),或者您可以根据当前消息生成 Avro 模式并检查两个模式是否相等