Today, KStream.print() is implemented as a special "foreach" function as below:
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.