Kafka Streams объединяется по ключу со сложным условиемJAVA

Программисты JAVA общаются здесь
Anonymous
Kafka Streams объединяется по ключу со сложным условием

Сообщение Anonymous »

Я пытаюсь соединить KStream с GlobalKTable по ключу, но с определенной логикой.

Код: Выделить всё

    StreamsBuilder builder = new StreamsBuilder();
KStream stream = builder.stream(inputTopic1); // key = "ABC"
GlobalKTable table = builder.globalTable(inputTopic2); // key = "ABC"

stream.join(table, // join first by "ABC" = "ABC", then by "AB" = "AB", then by "A" = "A"
(key, value) -> key,
(valueLeft, valueRigth) -> {/* identify by which condition the join was performed */});
Например, если ключ = «ABC», то:
  • сначала присоединитесь по полному ключу - т.е. "ABC" = "ABC"
  • затем, если не присоединитесь, присоединитесь по первым двум символам (удален один символ) - т.е. "AB" = "AB"
  • наконец, попробуйте объединиться только по одному символу - т.е. "A" = "A"
Кроме того, необходимо знать, по какому условию было выполнено соединение - например, по 3 буквам/по 2 буквам/по 1 букве.

Вопрос в том, возможно ли это вообще или стоит поискать обходной путь? Например, сделать копии GlobalKTable с соответствующими ключами (таблица с ключом «ABC», одна с ключом «AB» и одна с ключом «A») и выполнить 3 отдельных соединения? Или, может быть, есть другие предложения?

Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/593 ... -condition

Вернуться в «JAVA»