3

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

protocol KafkaTopic {

   record EventA {
      int anIntHappened;
   }

   record EventB {
      string aStringHappened;
   }
}

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

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

  • 使用其关联的模式对每条消息进行编码。缺点是我们为每条消息引入了开销。
  • 在 IDL 定义中创建联合类型KafkaTopicMessage并发送不带模式的消息。然后我不知道使用旧模式编译的客户端会发生什么。希望没有错,但是联合中的这种额外包装对我来说似乎不自然,但在这种情况下它可能是正确的。
  • 让客户选择他们感兴趣的几个模式并在消费者端创建联合模式。生产者将发送没有任何联合的普通模式。我什至不知道这是否可行。

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

4

0 回答 0