Guozhang Wang created KAFKA-7326:
------------------------------------
Summary: Let KStream.print() to flush on each printed line
Key: KAFKA-7326
URL: https://issues.apache.org/jira/browse/KAFKA-7326
Project: Kafka
Issue Type: Improvement
Components: streams
Reporter: Guozhang Wang
Today, {{KStream.print()}} is implemented as a special "foreach" function as
below:
{code}
@Override
public void apply(final K key, final V value) {
final String data = String.format("[%s]: %s", label, mapper.apply(key,
value));
printWriter.println(data);
}
{code}
Note that since {{this.printWriter = new PrintWriter(new
OutputStreamWriter(outputStream, StandardCharsets.UTF_8));}}, without flushing
the writer we do not guarantee that printed lines are written to the underlying
`outputStream` in time.
Since {{KStream.print()}} is mainly for debugging / testing / demoing purposes,
not for performance, I think it is okay to enforce auto flushing.
This would include:
1. set {{autoFlush}} in the constructor of printWriter.
2. document in java-docs of {{KStream.print}} that this is for debug / testing
purposes only, and it will try to flush on each record print, and hence should
not be used for production usage if performance requirement is key.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)