Учитывая следующий код:
KStream<String, Custom> stream =
builder.stream(Serdes.String(), customSerde, "test_in");
stream
.groupByKey(Serdes.String(), customSerde)
.reduce(new CustomReducer(), "reduction_state")
.print(Serdes.String(), customSerde);
У меня есть оператор println
внутри метода apply редьюсера, который успешно распечатывается, когда я ожидаю, что произойдет сокращение. Однако окончательный оператор печати, показанный выше, ничего не отображает. аналогичным образом, если я использую метод to
, а не print
, я не вижу сообщений в теме назначения.
Что мне нужно после оператора сокращения, чтобы увидеть результат сокращения? Если на вход подается одно значение, я ничего не ожидаю увидеть. Если вводится второе значение с тем же ключом, я ожидаю, что редуктор применится (что он и делает), и я также ожидаю, что результат редукции продолжится до следующего шага в конвейере обработки. Как описано, я ничего не вижу на последующих этапах конвейера и не понимаю, почему.
StreamConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG
в значение 0. - person Matthias J. Sax   schedule 11.11.2016