1つのトピックで複数のイベントを扱う
Schema RegistryのSubjectを以下のいずれかのStrategyで利用することで、1つのトピックで複数の異なるスキーマを持ったイベントを対応できる。※ Subject Name Strategyの説明はこちら RecordNameStrategy
トピックを横断して複数のスキーマを適用する
TopicRecordNameStrategy
トピック単位で複数のスキーマを適用する
通常のKafka Producer/Consumer、Streamsの場合であればこちらの発表にもあるように具体的な設定や実装例がある。 一方でKafka Connectやksql DBの場合どのように対応するかだが、Kafka Connectであれば以下のようにコネクタを設定することで一つのトピックで複数のイベントをハンドルできる。
code:Connectorの設定例 - ValueにのみTopicRecordnameStrategyを適用している
{
//抜粋
"key.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.value.subject.name.strategy": "io.confluent.kafka.serializers.subject.TopicRecordNameStrategy",
}
ksql DBは残念ながら現時点では複数イベントを含むトピックが処理できない。
そのため、ストリーム処理での何らかの処理が必要な場合はKafka Streamsを利用するか、ksql DBで処理が必要なメッセージのみ一度Kafkaへ取り込んだ後にKafka Streams等でメッセージスキーマ単位で振り分ける等の対応が必要そう。