Как вывести несколько записей из Transformer? - PullRequest
0 голосов
/ 18 января 2019

Дано: топология DSL с KStream::transform. В рамках выполнения Transformer::transform из входного генерируется несколько сообщений (KeyValue<String, Message>).

Я, вероятно, могу вернуть KeyValue<String, List<Message>> объект из Transformer::transform и применить flatMapValues в качестве следующего процессора в топологии, чтобы выровнять список. Однако мне интересно, возможно ли использовать ProcessorContext::forward для той же цели, т.е.

public KeyValue<String, Message> transform(String key, Message message) {
        Iterable<Message> messages = generateMultipleFromOne(message);
        messages.forEach(m->context.forward(key, m));

        return null;
}

1 Ответ

0 голосов
/ 20 января 2019

Из javadoc Transformer.transform (ключ K, значение V) :

Если в нисходящем направлении необходимо переслать более одной выходной записи, ProcessorContext.forward(Object, Object) и ProcessorContext.forward(Object, Object, To) можно использовать.

Обратите внимание, что возвращение нового значения ключа просто для удобства.То же самое можно сделать, используя ProcessorContext.forward(Object, Object) и возвращая ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...