У нас есть входящая тема kafka с сериализованными в нее сообщениями на основе схемы несколько Avro.
Нам нужно разделить сообщения в формате Avro на несколько других тем kafka на основе определенного значения общего атрибута схемы.
|------> [OUTGOING TOPIC(AVRO) - A]
[INCOMING TOPIC(AVRO)] ----->|------> [OUTGOING TOPIC(AVRO) - B]
|------> [OUTGOING TOPIC(AVRO) - C]
Хотелось бы понять, как этого добиться, избегая при этом создания промежуточного клиента для этого разделения/маршрутизации на объединенной платформе.
Я изучил коннектор kafka, но не нашел существующий коннектор, который бы так работал.
KSQL может не работать, потому что во входном топике нет одной схемы.
Вы можете написать приложение Kafka Streams и использовать branch()
:
KStream input = builder.stream("topic");
KStream[] splitStreams = input.branch(...);
splitStream[0].to("output-topic-1");
splitStream[1].to("output-topic-2");
// etc.
Вы можете использовать KSQL или Kafka Streams.