【问题标题】:kafka topic name change without changing consumerskafka主题名称更改而不更改消费者
【发布时间】:2019-04-18 05:41:45
【问题描述】:
我们计划从 kafka 主题名称中删除版本。当前,相关消息的模式版本构成主题名称的一部分。但是在未来我们将有大量的消息的小变化,我们不想创建太多的主题。但这些话题已经有很多消费者。我们不希望所有这些主题都进行更改(仍应尝试从具有版本号的主题中消费)。如何做到这一点?是否有任何工具(例如 AVRO)可以帮助实现这一目标?有没有人遇到过类似的问题。第二个问题 - 消费者如何区分来自同一主题的结构微小变化的消息。
【问题讨论】:
标签:
apache-kafka
avro
confluent-schema-registry
【解决方案1】:
如果我理解正确,我会建议:
pattern = Pattern.compile("topic_name_without_schema_version.*");
kafkaConsumer.subscribe(pattern, new ConsumerRebalanceListener());
- 关于第二个:你想实现什么样的差异化?如果您只想知道当前消息是否与最新的 Avro Schema 不兼容,您可以尝试转换当前消息并捕获异常(如果有),或者您可以根据当前消息生成 Avro 模式并检查两个模式的相等性