[ 
https://issues.apache.org/jira/browse/KAFKA-7326?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthias J. Sax reassigned KAFKA-7326:
--------------------------------------

    Assignee: huxihx

> 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
>    Affects Versions: 2.0.0
>            Reporter: Guozhang Wang
>            Assignee: huxihx
>            Priority: Major
>              Labels: newbie++
>
> 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)

Reply via email to