@Override
            public void run() {
                streams.close();
                latch.countDown();
            }
This demo demonstrates, using the high-level KStream DSL, how to implement an IoT demo application
which ingests temperature value to compute the maximum value in the latest TEMPERATURE_WINDOW_SIZE seconds (which
is 5 seconds) and send a new message if it exceeds the TEMPERATURE_THRESHOLD (which is 20)

<p>In this example, the input stream reads from a topic named "iot-temperature", where the values of messages
represent temperature values; using a TEMPERATURE_WINDOW_SIZE seconds "tumbling" window, the maximum value is processed and
sent to a topic named "iot-temperature-max" if it exceeds the TEMPERATURE_THRESHOLD.

<p>Before running this example you must create the input topic for temperature values in the following way :

<p>bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic iot-temperature

<p>and at same time create the output topic for filtered values :

<p>bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic iot-temperature-max

<p>After that, a console consumer can be started in order to read filtered values from the "iot-temperature-max" topic :

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic iot-temperature-max --from-beginning

<p>On the other side, a console producer can be used for sending temperature values (which needs to be integers)
to "iot-temperature" by typing them on the console :

<p>bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic iot-temperature
> 10
> 15
> 22
streams/examples/src/main/java/org/apache/kafka/streams/examples/temperature/TemperatureDemo.java