为听取多个事件的Kafka主题编写Avro IDL的正确方法是什么?

时间:2017-01-25 16:36:05

标签: apache-kafka avro kafka-consumer-api kafka-producer-api avro-tools

我们计划在Kafka中使用单个主题,我们将发布与域相关的事件。 IDL定义类似于:

protocol KafkaTopic {

   record EventA {
      int anIntHappened;
   }

   record EventB {
      string aStringHappened;
   }
}

所以我们有一个通道和多个类型流经该通道。所有编码都是使用SpecificRecordBase派生类完成的。

我认为现在我们有几种选择:

  • 使用关联的架构对每封邮件进行编码。缺点是我们为每条消息引入了开销。
  • 在IDL定义中创建联合类型KafkaTopicMessage,并发送不带架构的消息。然后我不知道使用旧模式的编译客户端会发生什么。希望没有错,但是这个额外的包装对我来说似乎不自然,但也许在这种背景下是正确的。
  • 让客户选择他们感兴趣的几个模式,并在消费者方面选择create the union schema。生产者将发送没有任何联盟的简单模式。我甚至都不知道这是否可行。

所以问题是,将Avro编码与Kafka主题消息结合使用时常见的模式是什么?

0 个答案:

没有答案