From 0ae4e5c690733df260a6a643b4452e3906c84d3b Mon Sep 17 00:00:00 2001
From: Christophe PARAGEAUD <cparageaud@ippon.fr>
Date: Fri, 6 Apr 2018 11:45:43 +0200
Subject: [PATCH] final version

---
 .idea/workspace.xml                           | 661 +++++++++++-------
 README.md                                     |  16 +-
 pom.xml                                       |  10 -
 .../fr/ippon/kafkaLatency/model/Person.java   |  26 +-
 .../AlimKafkaAsync.java}                      | 251 +++----
 .../AlimKafkaSync.java}                       | 258 +++----
 .../streaming/KafkaContinuousSpark.java       |  50 +-
 .../kafkaLatency/streaming/KafkaFlink.java    |  18 +-
 ...fkaSpark.java => KafkaSparkStreaming.java} |  36 +-
 .../{KafkaStreaming.java => KafkaStream.java} |  53 +-
 .../streaming/KafkaStructuredSpark.java       |  18 +-
 .../fr/ippon/kafkaLatency/utils/Config.java   |  16 +-
 .../ippon/kafkaLatency/utils/UtilStats.java   |  50 +-
 src/main/resources/config.properties          |   9 +-
 src/main/resources/log4j.xml                  |  24 +-
 target/classes/config.properties              |   9 +-
 .../fr/ippon/kafkaLatency/AlimKafka$1.class   | Bin 588 -> 0 bytes
 .../fr/ippon/kafkaLatency/AlimKafka.class     | Bin 8102 -> 0 bytes
 .../ippon/kafkaLatency/AlimKafkaOptim.class   | Bin 6706 -> 0 bytes
 .../streaming/KafkaContinuousSpark.class      | Bin 7957 -> 7741 bytes
 .../KafkaFlink$TimestampsFetcher.class        | Bin 2352 -> 2398 bytes
 .../kafkaLatency/streaming/KafkaFlink.class   | Bin 6186 -> 6197 bytes
 .../kafkaLatency/streaming/KafkaSpark.class   | Bin 7953 -> 0 bytes
 .../streaming/KafkaStreaming$1.class          | Bin 1662 -> 0 bytes
 .../KafkaStreaming$MyTimestampExtractor.class | Bin 1936 -> 0 bytes
 .../streaming/KafkaStreaming.class            | Bin 3250 -> 0 bytes
 .../streaming/KafkaStructuredSpark.class      | Bin 7998 -> 7889 bytes
 .../fr/ippon/kafkaLatency/utils/Config.class  | Bin 2298 -> 2298 bytes
 .../ippon/kafkaLatency/utils/UtilStats.class  | Bin 3457 -> 3578 bytes
 target/classes/log4j.xml                      |  24 +-
 target/test-classes/LatencyTest.class         | Bin 3074 -> 0 bytes
 31 files changed, 831 insertions(+), 698 deletions(-)
 rename src/main/java/fr/ippon/kafkaLatency/{AlimKafkaOptim.java => producer/AlimKafkaAsync.java} (76%)
 rename src/main/java/fr/ippon/kafkaLatency/{AlimKafka.java => producer/AlimKafkaSync.java} (78%)
 rename src/main/java/fr/ippon/kafkaLatency/streaming/{KafkaSpark.java => KafkaSparkStreaming.java} (73%)
 rename src/main/java/fr/ippon/kafkaLatency/streaming/{KafkaStreaming.java => KafkaStream.java} (56%)
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/AlimKafka$1.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/AlimKafka.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/AlimKafkaOptim.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/streaming/KafkaSpark.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$1.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$MyTimestampExtractor.class
 delete mode 100644 target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming.class
 delete mode 100644 target/test-classes/LatencyTest.class

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 47feec2..7dbfee8 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,7 +1,40 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="b73c7a62-507c-4776-b197-5964d0935e98" name="Default" comment="" />
+    <list default="true" id="b73c7a62-507c-4776-b197-5964d0935e98" name="Default" comment="final version">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+      <change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
+      <change beforePath="$PROJECT_DIR$/pom.xml" afterPath="$PROJECT_DIR$/pom.xml" />
+      <change beforePath="$PROJECT_DIR$/spark.jfr" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/model/Person.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/model/Person.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java" afterPath="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/config.properties" afterPath="$PROJECT_DIR$/src/main/resources/config.properties" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/log4j.xml" afterPath="$PROJECT_DIR$/src/main/resources/log4j.xml" />
+      <change beforePath="$PROJECT_DIR$/target/classes/config.properties" afterPath="$PROJECT_DIR$/target/classes/config.properties" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/AlimKafka$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/AlimKafka.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/AlimKafkaOptim.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink$TimestampsFetcher.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink$TimestampsFetcher.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaSpark.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$1.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$MyTimestampExtractor.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming.class" afterPath="" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/utils/Config.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/utils/Config.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/utils/UtilStats.class" afterPath="$PROJECT_DIR$/target/classes/fr/ippon/kafkaLatency/utils/UtilStats.class" />
+      <change beforePath="$PROJECT_DIR$/target/classes/log4j.xml" afterPath="$PROJECT_DIR$/target/classes/log4j.xml" />
+      <change beforePath="$PROJECT_DIR$/target/test-classes/LatencyTest.class" afterPath="" />
+    </list>
     <ignored path="spark-chess.iws" />
     <ignored path=".idea/workspace.xml" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -23,8 +56,8 @@
       <file leaf-file-name="KafkaContinuousSpark.java" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="288">
-              <caret line="33" column="34" lean-forward="false" selection-start-line="33" selection-start-column="34" selection-end-line="33" selection-end-column="34" />
+            <state relative-caret-position="364">
+              <caret line="89" column="24" lean-forward="false" selection-start-line="89" selection-start-column="24" selection-end-line="89" selection-end-column="24" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -32,11 +65,11 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="AlimKafka.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java">
+      <file leaf-file-name="KafkaStructuredSpark.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="413">
-              <caret line="78" column="0" lean-forward="false" selection-start-line="78" selection-start-column="0" selection-end-line="78" selection-end-column="0" />
+            <state relative-caret-position="296">
+              <caret line="88" column="22" lean-forward="false" selection-start-line="88" selection-start-column="22" selection-end-line="88" selection-end-column="22" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -44,22 +77,26 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="config.properties" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/config.properties">
+      <file leaf-file-name="UtilStats.java" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="90">
-              <caret line="6" column="14" lean-forward="false" selection-start-line="6" selection-start-column="14" selection-end-line="6" selection-end-column="14" />
-              <folding />
+            <state relative-caret-position="435">
+              <caret line="29" column="35" lean-forward="false" selection-start-line="29" selection-start-column="35" selection-end-line="29" selection-end-column="35" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="log4j.xml" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/log4j.xml">
+      <file leaf-file-name="AlimKafkaSync.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="60">
-              <caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
-              <folding />
+            <state relative-caret-position="690">
+              <caret line="124" column="21" lean-forward="false" selection-start-line="124" selection-start-column="21" selection-end-line="124" selection-end-column="21" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
@@ -67,18 +104,18 @@
       <file leaf-file-name="pom.xml" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/pom.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="390">
-              <caret line="26" column="0" lean-forward="true" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
+            <state relative-caret-position="975">
+              <caret line="65" column="21" lean-forward="false" selection-start-line="65" selection-start-column="21" selection-end-line="65" selection-end-column="21" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="KafkaSpark.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java">
+      <file leaf-file-name="AlimKafkaAsync.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-225">
-              <caret line="39" column="73" lean-forward="false" selection-start-line="39" selection-start-column="73" selection-end-line="39" selection-end-column="73" />
+            <state relative-caret-position="394">
+              <caret line="123" column="21" lean-forward="false" selection-start-line="123" selection-start-column="21" selection-end-line="123" selection-end-column="21" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -86,21 +123,50 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="UtilStats.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java">
+      <file leaf-file-name="Config.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="207">
-              <caret line="33" column="45" lean-forward="false" selection-start-line="33" selection-start-column="45" selection-end-line="33" selection-end-column="45" />
-              <folding />
+            <state relative-caret-position="394">
+              <caret line="34" column="53" lean-forward="false" selection-start-line="34" selection-start-column="53" selection-end-line="34" selection-end-column="53" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#1288#1289#0" expanded="true" />
+                <element signature="e#1343#1344#0" expanded="true" />
+                <element signature="e#1457#1458#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="KafkaStructuredSpark.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java">
+      <file leaf-file-name="KafkaStream.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1340">
-              <caret line="93" column="5" lean-forward="false" selection-start-line="93" selection-start-column="5" selection-end-line="93" selection-end-column="5" />
+            <state relative-caret-position="186">
+              <caret line="76" column="75" lean-forward="false" selection-start-line="76" selection-start-column="75" selection-end-line="76" selection-end-column="75" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="KafkaFlink.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="193">
+              <caret line="30" column="12" lean-forward="false" selection-start-line="30" selection-start-column="12" selection-end-line="30" selection-end-column="12" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="KafkaSparkStreaming.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="300">
+              <caret line="72" column="5" lean-forward="false" selection-start-line="72" selection-start-column="5" selection-end-line="72" selection-end-column="5" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -125,7 +191,12 @@
       <find>UtilStats</find>
       <find>add</find>
       <find>bean</find>
+      <find>total</find>
+      <find>stat</find>
+      <find>producer-topic-metrics.record-send-rate</find>
       <find>Stats total</find>
+      <find>596</find>
+      <find>max=596</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
@@ -139,29 +210,12 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/UtilStats.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/KafkaFlink.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/KafkaFlink.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/kafkaContinuousSpark.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/KafkaStreamsTest.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/kafkaStructuredSpark.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/AlimKafka.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTimestamp/kafkaSpark.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/UtilStats.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/PropertyFileResolver.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/ApplicationProperty.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/ApplicaitonPropertyProducer.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/Person.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/Config.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/KafkaMetrics.java" />
         <option value="$PROJECT_DIR$/chess.log" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/KafkaStreamsTest.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/kafkaSpark.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/KafkaFlink.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/kafkaStructuredSpark.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/kafkaContinuousSpark.java" />
-        <option value="$PROJECT_DIR$/pom.xml" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/StreamingConsumer/kafkaContinuousSpark.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/StreamingConsumer/kafkaSpark.java" />
         <option value="$PROJECT_DIR$/src/test/latencyTest.java" />
@@ -181,15 +235,32 @@
         <option value="$PROJECT_DIR$/src/main/resources/log4j.properties" />
         <option value="$PROJECT_DIR$/src/main/resources/-log4j.xml" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/StreamingConsumer/KafkaSpark.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreamingReceiver.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkReceiver.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/StreamWrapperActor.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/StreamKafkaActor.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaAsync.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/kafkacontinous.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaSync.java" />
+        <option value="$PROJECT_DIR$/pom.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreams.java" />
+        <option value="$PROJECT_DIR$/kafka-bench.log" />
+        <option value="$PROJECT_DIR$/src/main/resources/log4j.xml" />
+        <option value="$PROJECT_DIR$/src/main/resources/config.properties" />
         <option value="$PROJECT_DIR$/README.md" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java" />
+        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java" />
         <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java" />
-        <option value="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java" />
-        <option value="$PROJECT_DIR$/src/main/resources/log4j.xml" />
-        <option value="$PROJECT_DIR$/src/main/resources/config.properties" />
       </list>
     </option>
   </component>
@@ -261,7 +332,9 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="PackagesPane" />
       <pane id="Scope" />
+      <pane id="Scratches" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -302,7 +375,7 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="kafkaLatency" type="462c0819:PsiDirectoryNode" />
-              <item name="streaming" type="462c0819:PsiDirectoryNode" />
+              <item name="producer" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="kafka-bench" type="b2602c69:ProjectViewProjectNode" />
@@ -311,27 +384,28 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="kafkaLatency" type="462c0819:PsiDirectoryNode" />
-              <item name="utils" type="462c0819:PsiDirectoryNode" />
+              <item name="streaming" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="kafka-bench" type="b2602c69:ProjectViewProjectNode" />
               <item name="Streaming-Kafka-Bench" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="resources" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="kafkaLatency" type="462c0819:PsiDirectoryNode" />
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="kafka-bench" type="b2602c69:ProjectViewProjectNode" />
               <item name="Streaming-Kafka-Bench" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="resources" type="462c0819:PsiDirectoryNode" />
             </path>
           </expand>
           <select />
         </subPane>
       </pane>
-      <pane id="Scratches" />
-      <pane id="PackagesPane" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -346,31 +420,32 @@
     <property name="options.splitter.details.proportions" value="0.2" />
     <property name="options.searchVisible" value="true" />
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
-    <property name="settings.editor.selected.configurable" value="Debugger_Data_Views_Java" />
+    <property name="settings.editor.selected.configurable" value="preferences.sourceCode.Other File Types" />
     <property name="project.structure.last.edited" value="Project" />
     <property name="project.structure.proportion" value="0.15" />
     <property name="project.structure.side.proportion" value="0.2" />
+    <property name="run.code.analysis.last.selected.profile" value="pProject Default" />
   </component>
   <component name="RecentsManager">
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="$PROJECT_DIR$/src" />
-    </key>
     <key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
       <recent name="fr.ippon.kafkaLatency.StreamingConsumer" />
     </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/src/main" />
+      <recent name="$PROJECT_DIR$/src" />
+      <recent name="$PROJECT_DIR$/src/main/resources" />
+      <recent name="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties" />
+      <recent name="$PROJECT_DIR$/src/main/java" />
+    </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="fr.ippon.kafkaLatency.streaming" />
       <recent name="fr.ippon.kafkaLatency" />
       <recent name="fr.ippon.kafkaLatency.StreamingConsumer" />
       <recent name="fr.ippon.kafkaTimestamp" />
       <recent name="kafka" />
-      <recent name="fr.ippon.kafka" />
     </key>
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="$PROJECT_DIR$/src/main" />
+    <key name="MoveFile.RECENT_KEYS">
       <recent name="$PROJECT_DIR$/src" />
-      <recent name="$PROJECT_DIR$/src/main/resources" />
-      <recent name="$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties" />
-      <recent name="$PROJECT_DIR$/src/main/java" />
     </key>
   </component>
   <component name="RunDashboard">
@@ -385,7 +460,7 @@
       </list>
     </option>
   </component>
-  <component name="RunManager" selected="JUnit.LatencyTest.sparkContinuousTest">
+  <component name="RunManager" selected="Application.KafkaContinuousSpark">
     <configuration default="true" type="Applet" factoryName="Applet">
       <option name="HTML_USED" value="false" />
       <option name="WIDTH" value="400" />
@@ -393,16 +468,36 @@
       <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
       <module />
     </configuration>
-    <configuration name="AlimKafka" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+    <configuration name="AlimKafkaAsync" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
+        <pattern>
+          <option name="PATTERN" value="fr.ippon.kafkaLatency.producer.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <extension name="recording" autostart="false" />
+      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.producer.AlimKafkaAsync" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
+      <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <option name="ENV_VARIABLES" />
+      <option name="PASS_PARENT_ENVS" value="true" />
+      <module name="kafka-bench" />
+      <envs />
+    </configuration>
+    <configuration name="AlimKafkaSync" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
         <pattern>
-          <option name="PATTERN" value="fr.ippon.kafkaLatency.*" />
+          <option name="PATTERN" value="fr.ippon.kafkaLatency.producer.*" />
           <option name="ENABLED" value="true" />
         </pattern>
       </extension>
       <extension name="recording" autostart="false" />
-      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.AlimKafka" />
-      <option name="VM_PARAMETERS" value="-XX:+UseG1GC" />
+      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.producer.AlimKafkaSync" />
+      <option name="VM_PARAMETERS" value="" />
       <option name="PROGRAM_PARAMETERS" value="" />
       <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -413,15 +508,15 @@
       <module name="kafka-bench" />
       <envs />
     </configuration>
-    <configuration name="AlimKafkaOptim" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+    <configuration name="KafkaContinuousSpark" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
         <pattern>
-          <option name="PATTERN" value="fr.ippon.kafkaLatency.*" />
+          <option name="PATTERN" value="fr.ippon.kafkaLatency.streaming.*" />
           <option name="ENABLED" value="true" />
         </pattern>
       </extension>
       <extension name="recording" autostart="false" />
-      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.AlimKafkaOptim" />
+      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.streaming.KafkaContinuousSpark" />
       <option name="VM_PARAMETERS" />
       <option name="PROGRAM_PARAMETERS" />
       <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
@@ -433,7 +528,7 @@
       <module name="kafka-bench" />
       <envs />
     </configuration>
-    <configuration name="KafkaSpark" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+    <configuration name="KafkaFlink" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
         <pattern>
           <option name="PATTERN" value="fr.ippon.kafkaLatency.streaming.*" />
@@ -441,10 +536,10 @@
         </pattern>
       </extension>
       <extension name="recording" autostart="false" />
-      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.streaming.KafkaSpark" />
-      <option name="VM_PARAMETERS" value="-XX:+UnlockCommercialFeatures -XX:+FlightRecorder" />
-      <option name="PROGRAM_PARAMETERS" value="" />
-      <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
+      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.streaming.KafkaFlink" />
+      <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
       <option name="ENABLE_SWING_INSPECTOR" value="false" />
@@ -453,7 +548,7 @@
       <module name="kafka-bench" />
       <envs />
     </configuration>
-    <configuration name="KafkaStructuredSpark" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+    <configuration name="KafkaStream" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
         <pattern>
           <option name="PATTERN" value="fr.ippon.kafkaLatency.streaming.*" />
@@ -461,7 +556,7 @@
         </pattern>
       </extension>
       <extension name="recording" autostart="false" />
-      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.streaming.KafkaStructuredSpark" />
+      <option name="MAIN_CLASS_NAME" value="fr.ippon.kafkaLatency.streaming.KafkaStream" />
       <option name="VM_PARAMETERS" />
       <option name="PROGRAM_PARAMETERS" />
       <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
@@ -488,27 +583,6 @@
       <module name="" />
       <envs />
     </configuration>
-    <configuration name="LatencyTest.sparkContinuousTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <extension name="recording" autostart="true" />
-      <module name="kafka-bench" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" value="" />
-      <option name="MAIN_CLASS_NAME" value="LatencyTest" />
-      <option name="METHOD_NAME" value="sparkContinuousTest" />
-      <option name="TEST_OBJECT" value="method" />
-      <option name="VM_PARAMETERS" value="-ea" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <envs />
-      <patterns />
-    </configuration>
     <configuration default="true" type="JUnit" factoryName="JUnit">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
       <extension name="recording" autostart="true" />
@@ -791,19 +865,18 @@
     </configuration>
     <list size="6">
       <item index="0" class="java.lang.String" itemvalue="JUnit.fr.ippon.kafkaLatency.streaming in kafka-bench" />
-      <item index="1" class="java.lang.String" itemvalue="Application.KafkaSpark" />
-      <item index="2" class="java.lang.String" itemvalue="Application.AlimKafka" />
-      <item index="3" class="java.lang.String" itemvalue="Application.KafkaStructuredSpark" />
-      <item index="4" class="java.lang.String" itemvalue="Application.AlimKafkaOptim" />
-      <item index="5" class="java.lang.String" itemvalue="JUnit.LatencyTest.sparkContinuousTest" />
+      <item index="1" class="java.lang.String" itemvalue="Application.KafkaStream" />
+      <item index="2" class="java.lang.String" itemvalue="Application.AlimKafkaSync" />
+      <item index="3" class="java.lang.String" itemvalue="Application.KafkaFlink" />
+      <item index="4" class="java.lang.String" itemvalue="Application.AlimKafkaAsync" />
+      <item index="5" class="java.lang.String" itemvalue="Application.KafkaContinuousSpark" />
     </list>
     <recent_temporary>
-      <list size="5">
-        <item index="0" class="java.lang.String" itemvalue="JUnit.LatencyTest.sparkContinuousTest" />
-        <item index="1" class="java.lang.String" itemvalue="Application.AlimKafka" />
-        <item index="2" class="java.lang.String" itemvalue="Application.KafkaSpark" />
-        <item index="3" class="java.lang.String" itemvalue="Application.AlimKafkaOptim" />
-        <item index="4" class="java.lang.String" itemvalue="Application.KafkaStructuredSpark" />
+      <list size="4">
+        <item index="0" class="java.lang.String" itemvalue="Application.AlimKafkaAsync" />
+        <item index="1" class="java.lang.String" itemvalue="Application.KafkaContinuousSpark" />
+        <item index="2" class="java.lang.String" itemvalue="Application.KafkaFlink" />
+        <item index="3" class="java.lang.String" itemvalue="Application.AlimKafkaSync" />
       </list>
     </recent_temporary>
   </component>
@@ -826,6 +899,14 @@
       <option name="presentableId" value="Default" />
       <updated>1482932185202</updated>
     </task>
+    <task id="LOCAL-00001" summary="Update formating">
+      <created>1522422883816</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1522422883816</updated>
+    </task>
+    <option name="localTasksCounter" value="2" />
     <servers />
   </component>
   <component name="TestHistory">
@@ -878,11 +959,13 @@
       <window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25856355" sideWeight="0.36324787" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.47557998" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25856355" sideWeight="0.6367521" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32975295" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25856355" sideWeight="0.6367521" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928178" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32975295" sideWeight="0.4859585" order="9" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21001221" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21245421" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3281768" sideWeight="0.49761903" order="11" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3281768" sideWeight="0.495116" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24969475" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
@@ -897,11 +980,9 @@
       <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928178" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Inspection Results" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32914045" sideWeight="0.49761903" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3281768" sideWeight="0.495116" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
     </layout>
     <layout-to-restore>
@@ -974,6 +1055,9 @@
     <ignored-roots>
       <path value="$PROJECT_DIR$" />
     </ignored-roots>
+    <MESSAGE value="Update formating" />
+    <MESSAGE value="final version" />
+    <option name="LAST_COMMIT_MESSAGE" value="final version" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
@@ -996,12 +1080,6 @@
           <properties />
           <option name="timeStamp" value="103" />
         </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java</url>
-          <line>43</line>
-          <properties />
-          <option name="timeStamp" value="144" />
-        </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/test/LatencyTest.java</url>
           <line>64</line>
@@ -1009,22 +1087,16 @@
           <option name="timeStamp" value="150" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java</url>
-          <line>66</line>
+          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java</url>
+          <line>47</line>
           <properties />
-          <option name="timeStamp" value="161" />
+          <option name="timeStamp" value="179" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java</url>
-          <line>62</line>
+          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java</url>
+          <line>75</line>
           <properties />
-          <option name="timeStamp" value="162" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java</url>
-          <line>63</line>
-          <properties />
-          <option name="timeStamp" value="163" />
+          <option name="timeStamp" value="182" />
         </line-breakpoint>
         <breakpoint enabled="true" type="java-exception">
           <properties class="java.lang.NullPointerException" package="java.lang" />
@@ -1034,7 +1106,7 @@
       <breakpoints-dialog>
         <breakpoints-dialog />
       </breakpoints-dialog>
-      <option name="time" value="164" />
+      <option name="time" value="186" />
     </breakpoint-manager>
     <watches-manager />
   </component>
@@ -1064,48 +1136,6 @@
     </expressions>
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/KafkaFlink.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/KafkaMetrics.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/kafkaSpark.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/KafkaStreamsTest.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaTime/kafkaStructuredSpark.java" />
-    <entry file="file://$PROJECT_DIR$/chess.log.2018-03-15" />
-    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/flink/flink-core/1.4.2/flink-core-1.4.2.jar!/org/apache/flink/api/common/functions/MapFunction.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="120">
-          <caret line="12" column="6" lean-forward="false" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/PropertyFileResolver.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/ApplicationProperty.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/properties/ApplicaitonPropertyProducer.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/JsonPOJOSerde.java" />
-    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-configuration2/2.2/commons-configuration2-2.2.jar!/org/apache/commons/configuration2/builder/fluent/Parameters.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="187">
-          <caret line="91" column="0" lean-forward="false" selection-start-line="91" selection-start-column="0" selection-end-line="91" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar!/org/apache/commons/beanutils/PropertyUtilsBean.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="296">
-          <caret line="26" column="30" lean-forward="false" selection-start-line="26" selection-start-column="13" selection-end-line="26" selection-end-column="30" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-configuration2/2.1/commons-configuration2-2.1.jar!/org/apache/commons/configuration2/builder/BasicConfigurationBuilder.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="214">
-          <caret line="100" column="0" lean-forward="false" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/KafkaMetrics.java" />
-    <entry file="file://$PROJECT_DIR$/chess.log" />
-    <entry file="file://$PROJECT_DIR$/test.json" />
-    <entry file="file://$PROJECT_DIR$/src/main/resources/persons.json" />
     <entry file="jar://$MAVEN_REPOSITORY$/org/apache/kafka/kafka-streams/0.11.0.2/kafka-streams-0.11.0.2.jar!/org/apache/kafka/streams/processor/TimestampExtractor.class">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="120">
@@ -1130,25 +1160,6 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaMain.java" />
     <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/StreamingConsumer/KafkaContinuousSparkMain.java" />
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-225">
-          <caret line="26" column="19" lean-forward="false" selection-start-line="26" selection-start-column="19" selection-end-line="26" selection-end-column="19" />
-          <folding>
-            <element signature="imports" expanded="false" />
-            <element signature="e#1873#1874#0" expanded="false" />
-            <element signature="e#1920#1921#0" expanded="false" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/listPersons.json">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/model/Person.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="180">
@@ -1171,16 +1182,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1012">
-          <caret line="76" column="87" lean-forward="true" selection-start-line="76" selection-start-column="87" selection-end-line="76" selection-end-column="87" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/StreamingConsumer/KafkaSparkTuning.java" />
     <entry file="file://$PROJECT_DIR$/src/log4j.xml" />
     <entry file="file://$PROJECT_DIR$/src/main/log4j.xml" />
@@ -1200,30 +1201,139 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java">
+    <entry file="file://$PROJECT_DIR$/src/test/LatencyTest.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreamingReceiver.java" />
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.11/2.3.0/spark-core_2.11-2.3.0.jar!/org/apache/spark/api/java/function/VoidFunction.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="240">
-          <caret line="22" column="0" lean-forward="false" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
-          <folding>
-            <element signature="imports" expanded="false" />
-          </folding>
+        <state relative-caret-position="120">
+          <caret line="11" column="9" lean-forward="false" selection-start-line="11" selection-start-column="9" selection-end-line="11" selection-end-column="9" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/dibbhatt/kafka-spark-consumer/1.0.14/kafka-spark-consumer-1.0.14.jar!/consumer/kafka/ReceiverLauncher.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="287">
+          <caret line="43" column="52" lean-forward="false" selection-start-line="43" selection-start-column="34" selection-end-line="43" selection-end-column="52" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkReceiver.java" />
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/DirectKafkaInputDStream.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="21" lean-forward="false" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/CachedKafkaConsumer.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="24" lean-forward="false" selection-start-line="1" selection-start-column="24" selection-end-line="1" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming_2.11/2.3.0/spark-streaming_2.11-2.3.0.jar!/org/apache/spark/streaming/package.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="15" lean-forward="false" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/KafkaRDD.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="21" lean-forward="false" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/KafkaRDDPartition.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="24" lean-forward="false" selection-start-line="1" selection-start-column="24" selection-end-line="1" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/package.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="15" lean-forward="false" selection-start-line="1" selection-start-column="15" selection-end-line="1" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-streaming-kafka-0-10_2.11/2.3.0/spark-streaming-kafka-0-10_2.11-2.3.0.jar!/org/apache/spark/streaming/kafka010/KafkaUtils.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="30">
+          <caret line="2" column="7" lean-forward="false" selection-start-line="2" selection-start-column="7" selection-end-line="2" selection-end-column="7" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java">
+    <entry file="jar://$MAVEN_REPOSITORY$/dibbhatt/kafka-spark-consumer/1.0.14/kafka-spark-consumer-1.0.14.jar!/consumer/kafka/MessageAndMetadata.class">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="735">
-          <caret line="49" column="51" lean-forward="false" selection-start-line="49" selection-start-column="51" selection-end-line="49" selection-end-column="51" />
+        <state relative-caret-position="90">
+          <caret line="9" column="13" lean-forward="false" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.6.7.1/jackson-databind-2.6.7.1.jar!/com/fasterxml/jackson/databind/node/ObjectNode.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="196">
+          <caret line="185" column="0" lean-forward="false" selection-start-line="185" selection-start-column="0" selection-end-line="185" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/com/typesafe/akka/akka-actor_2.11/2.5.9/akka-actor_2.11-2.5.9.jar!/akka/japi/function/Procedure.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="60">
+          <caret line="4" column="6" lean-forward="false" selection-start-line="4" selection-start-column="6" selection-end-line="4" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.jar!/scala/collection/convert/Wrappers.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="214">
+          <caret line="41" column="0" lean-forward="false" selection-start-line="41" selection-start-column="0" selection-end-line="41" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/StreamKafkaActor.java" />
+    <entry file="file://$PROJECT_DIR$/src/main/resources/listPersons.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="15">
+          <caret line="1" column="5" lean-forward="false" selection-start-line="1" selection-start-column="1" selection-end-line="1" selection-end-column="5" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/kafkacontinous.java" />
+    <entry file="jar://$MAVEN_REPOSITORY$/org/apache/spark/spark-core_2.11/2.3.0/spark-core_2.11-2.3.0.jar!/org/apache/spark/api/java/function/MapFunction.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="120">
+          <caret line="11" column="6" lean-forward="false" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/kafka-bench.log">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-90217">
+          <caret line="1670" column="149" lean-forward="false" selection-start-line="1670" selection-start-column="142" selection-end-line="1670" selection-end-column="149" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/MetricsProducerReporter.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="630">
+          <caret line="44" column="26" lean-forward="false" selection-start-line="44" selection-start-column="18" selection-end-line="44" selection-end-column="26" />
           <folding>
-            <element signature="imports" expanded="false" />
+            <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/MetricsProducerReporter.java">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/log4j.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="105">
-          <caret line="17" column="36" lean-forward="false" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="36" />
+        <state relative-caret-position="255">
+          <caret line="17" column="45" lean-forward="false" selection-start-line="17" selection-start-column="45" selection-end-line="17" selection-end-column="45" />
           <folding />
         </state>
       </provider>
@@ -1231,8 +1341,8 @@
     <entry file="file://$PROJECT_DIR$/README.md">
       <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
         <state split_layout="SPLIT">
-          <first_editor relative-caret-position="690">
-            <caret line="46" column="6" lean-forward="false" selection-start-line="46" selection-start-column="6" selection-end-line="46" selection-end-column="6" />
+          <first_editor relative-caret-position="720">
+            <caret line="48" column="22" lean-forward="true" selection-start-line="48" selection-start-column="22" selection-end-line="48" selection-end-column="22" />
             <folding />
           </first_editor>
           <second_editor />
@@ -1245,91 +1355,112 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/config.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
-          <caret line="33" column="34" lean-forward="false" selection-start-line="33" selection-start-column="34" selection-end-line="33" selection-end-column="34" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state relative-caret-position="15">
+          <caret line="1" column="32" lean-forward="false" selection-start-line="1" selection-start-column="32" selection-end-line="1" selection-end-column="32" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java">
+    <entry file="file://$PROJECT_DIR$/pom.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="975">
+          <caret line="65" column="21" lean-forward="false" selection-start-line="65" selection-start-column="21" selection-end-line="65" selection-end-column="21" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/Config.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1340">
-          <caret line="93" column="5" lean-forward="false" selection-start-line="93" selection-start-column="5" selection-end-line="93" selection-end-column="5" />
+        <state relative-caret-position="394">
+          <caret line="34" column="53" lean-forward="false" selection-start-line="34" selection-start-column="53" selection-end-line="34" selection-end-column="53" />
           <folding>
             <element signature="imports" expanded="true" />
+            <element signature="e#1288#1289#0" expanded="true" />
+            <element signature="e#1343#1344#0" expanded="true" />
+            <element signature="e#1457#1458#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-225">
-          <caret line="39" column="73" lean-forward="false" selection-start-line="39" selection-start-column="73" selection-end-line="39" selection-end-column="73" />
+        <state relative-caret-position="186">
+          <caret line="76" column="75" lean-forward="false" selection-start-line="76" selection-start-column="75" selection-end-line="76" selection-end-column="75" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="33" column="45" lean-forward="false" selection-start-line="33" selection-start-column="45" selection-end-line="33" selection-end-column="45" />
-          <folding />
+        <state relative-caret-position="193">
+          <caret line="30" column="12" lean-forward="false" selection-start-line="30" selection-start-column="12" selection-end-line="30" selection-end-column="12" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="413">
-          <caret line="78" column="0" lean-forward="false" selection-start-line="78" selection-start-column="0" selection-end-line="78" selection-end-column="0" />
+        <state relative-caret-position="364">
+          <caret line="89" column="24" lean-forward="false" selection-start-line="89" selection-start-column="24" selection-end-line="89" selection-end-column="24" />
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/log4j.xml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="60">
-          <caret line="4" column="0" lean-forward="false" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="296">
+          <caret line="88" column="22" lean-forward="false" selection-start-line="88" selection-start-column="22" selection-end-line="88" selection-end-column="22" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/kafka-bench.log">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-26569">
-          <caret line="1938" column="42" lean-forward="false" selection-start-line="1938" selection-start-column="32" selection-end-line="1938" selection-end-column="42" />
-          <folding />
+        <state relative-caret-position="394">
+          <caret line="123" column="21" lean-forward="false" selection-start-line="123" selection-start-column="21" selection-end-line="123" selection-end-column="21" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/LatencyTest.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="246">
-          <caret line="25" column="0" lean-forward="true" selection-start-line="25" selection-start-column="0" selection-end-line="25" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="690">
+          <caret line="124" column="21" lean-forward="false" selection-start-line="124" selection-start-column="21" selection-end-line="124" selection-end-column="21" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/pom.xml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="390">
-          <caret line="26" column="0" lean-forward="true" selection-start-line="26" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="300">
+          <caret line="72" column="5" lean-forward="false" selection-start-line="72" selection-start-column="5" selection-end-line="72" selection-end-column="5" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/config.properties">
+    <entry file="file://$PROJECT_DIR$/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="90">
-          <caret line="6" column="14" lean-forward="false" selection-start-line="6" selection-start-column="14" selection-end-line="6" selection-end-column="14" />
-          <folding />
+        <state relative-caret-position="435">
+          <caret line="29" column="35" lean-forward="false" selection-start-line="29" selection-start-column="35" selection-end-line="29" selection-end-column="35" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
diff --git a/README.md b/README.md
index c1e4943..d36835f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Experiment with Apache Kafka and streaming framework
 
-Mesure latency between record insertion in Kafka and Streaming processing using Kafka automated timestamp of messages.
+Measure latency between record insertion in Kafka and Streaming processing using automated timestamping of Kafka messages.
 
 ## Frameworks tested
 - Kafka Stream
@@ -14,23 +14,25 @@ Mesure latency between record insertion in Kafka and Streaming processing using
 
 ## Sources
 ### Producer
-- fr.ippon.kafkaLatency.AlimKafka : Kafka Producer (100 000 messages)
+- fr.ippon.kafkaLatency.producer.AlimKafkaSync : Kafka Producer (100 000 messages) : sync API
+- fr.ippon.kafkaLatency.producer.AlimKafkaAsync : Kafka Producer (100 000 messages) : Async API
 
 ### Consummer
-- fr.ippon.kafkaLatency.streaming.KafkaSpark : Spark streaming consummer
+- fr.ippon.kafkaLatency.streaming.KafkaSparkStreaming : Spark streaming consummer
 - fr.ippon.kafkaLatency.streaming.KafkaStructuredSpark : Spark Structured streaming consummer
 - fr.ippon.kafkaLatency.streaming.KafkaContinuousSpark : Spark Continous processing consummer
-- fr.ippon.kafkaLatency.streaming.KafkaStreaming : Kafka Streams consummer
+- fr.ippon.kafkaLatency.streaming.KafkaStream : Kafka Streams consummer
 - fr.ippon.kafkaLatency.streaming.KafkaFlink : Flink consummer
 
 ### Utils
 - fr.ippon.kafkaLatency.utils.UtilStats : Streaming statistics
 - fr.ippon.kafkaLatency.utils.MetricsProducerReporter : Kafka Producer Metrics
+- fr.ippon.kafkaLatency.utils.Config : Helper to fetch properties
 
 ## Resources
 ### config.properties :
  - Kafka
-    - topic : Kafka topic name to use
+    - topic : Kafka topic to use
     - numPartitions : Number of partitions for topic
     - replication : Replication Factor for topic
     - bootstrap.servers: List of Kafka servers
@@ -38,10 +40,10 @@ Mesure latency between record insertion in Kafka and Streaming processing using
  - Streaming
     - stats.step : Number of message to group before calculate stats 
     - stats.total : Total number of messages
-    - max.poll.records : Max records to fetch in Kafka
+    - max.poll.records : Max records to fetch in Kafka in a micro-batch
     - spark.continuous.interval : Trigger interval in spark continous processing
     - spark.structured.interval : Trigger interval in spark structured streaming
     - spark.streaming.interval : Interval of micro batch
 
  - data source
-    - listPersonns.json
\ No newline at end of file
+    - listPersons.json
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 1fceb87..267cf57 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,16 +15,6 @@
 		<junit.version>4.12</junit.version>
 	</properties>
 
-    <repositories>
-        <repository>
-            <id>apache.snapshots</id>
-            <name>Apache Development Snapshot Repository</name>
-            <url>https://repository.apache.org/content/repositories/snapshots/</url>
-            <releases><enabled>false</enabled></releases>
-            <snapshots><enabled>true</enabled></snapshots>
-        </repository>
-    </repositories>
-
 	<build>
 
 		<pluginManagement>
diff --git a/src/main/java/fr/ippon/kafkaLatency/model/Person.java b/src/main/java/fr/ippon/kafkaLatency/model/Person.java
index 6010811..9fb9b85 100644
--- a/src/main/java/fr/ippon/kafkaLatency/model/Person.java
+++ b/src/main/java/fr/ippon/kafkaLatency/model/Person.java
@@ -10,33 +10,35 @@ import java.util.List;
  */
 public class Person {
 
-    Integer id;
+    private Integer id;
 
-    Boolean isActive;
+    private Boolean isActive;
 
-    Integer age;
+    private Integer age;
 
-    String name;
+    private String name;
 
-    String gender;
+    private String gender;
 
-    String company;
+    private String company;
 
-    String email;
+    private String email;
 
-    String phone;
+    private String phone;
 
-    String address;
+    private String address;
 
-    String placeOfBirth;
+    private String placeOfBirth;
 
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "YYYY-MM-dd", timezone = "CET")
+    private
     Date dateOfBirth;
 
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "YYYY-MM-dd'T'hh:mm:ss", timezone = "CET")
+    private
     Date registered;
 
-    List<Friend> friends;
+    private List<Friend> friends;
 
     public Person() {
     }
@@ -161,7 +163,7 @@ public class Person {
         this.friends = friends;
     }
 
-    public static class Friend {
+    static class Friend {
         Integer id;
 
         public Friend() {
diff --git a/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java b/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java
similarity index 76%
rename from src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java
rename to src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java
index 27909b5..53c96bd 100644
--- a/src/main/java/fr/ippon/kafkaLatency/AlimKafkaOptim.java
+++ b/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaAsync.java
@@ -1,123 +1,128 @@
-package fr.ippon.kafkaLatency;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import fr.ippon.kafkaLatency.utils.Config;
-import fr.ippon.kafkaLatency.utils.MetricsProducerReporter;
-import org.apache.kafka.clients.admin.AdminClient;
-import org.apache.kafka.clients.admin.CreateTopicsResult;
-import org.apache.kafka.clients.admin.DeleteTopicsResult;
-import org.apache.kafka.clients.admin.NewTopic;
-import org.apache.kafka.clients.producer.KafkaProducer;
-import org.apache.kafka.clients.producer.Producer;
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.clients.producer.ProducerRecord;
-import org.apache.kafka.common.errors.TopicExistsException;
-import org.apache.kafka.common.internals.Topic;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.connect.json.JsonSerializer;
-import org.apache.log4j.Logger;
-
-import java.beans.IntrospectionException;
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
-/**
- * IPPON 2018.
- */
-public class AlimKafkaOptim {
-
-    private static ClassLoader classLoader = AlimKafkaOptim.class.getClassLoader();
-
-    private final static Logger logger = Logger.getLogger(AlimKafkaOptim.class);
-
-    public static void main(String[] args)  throws InterruptedException, IntrospectionException {
-
-        StringBuilder stats = new StringBuilder();
-
-        Properties props = new Properties();
-
-        Producer<String, JsonNode> producer = null;
-
-        String brokers = Config.getProperty("bootstrap.servers");
-        String topic = Config.getProperty("topic");
-        String numPartitions = Config.getProperty("numPartitions");
-        String replication = Config.getProperty("replication");
-        int total = Integer.valueOf(Config.getProperty("stats.total"));
-
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
-
-        //Create topic if not exist
-        AdminClient adminClient = AdminClient.create(props);
-
-        NewTopic newTopic = new NewTopic(topic, Integer.valueOf(numPartitions), Integer.valueOf(replication).shortValue());
-        CreateTopicsResult createTopicsResult = adminClient.createTopics(Collections.singleton(newTopic));
-
-        try {
-            createTopicsResult.all().get();
-            // real failure cause is wrapped inside the raised ExecutionException
-        } catch (ExecutionException e) {
-            if (e.getCause() instanceof TopicExistsException) {
-                logger.info("Topic already exists (delete manually to change settings) !!");
-            } else if (e.getCause() instanceof TimeoutException) {
-                logger.error("Timeout !!");
-            } else {
-                logger.error("Error !!" + e.getCause());
-            }
-        } finally {
-            adminClient.close();
-        }
-
-        try {
-
-            props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducer");
-            props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
-                    StringSerializer.class.getName());
-            props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
-                    JsonSerializer.class.getName());
-
-            ObjectMapper mapper = new ObjectMapper();
-
-            producer = new KafkaProducer<String, JsonNode>(props);
-            File file = new File(classLoader.getResource("listPersons.json").getFile());
-
-            long i = 0;
-
-            JsonNode allNodes = mapper.readTree(file);
-
-            while (i < total) {
-                Iterator<JsonNode> it = allNodes.iterator();
-                LocalDateTime start = LocalDateTime.now();
-
-                Producer<String, JsonNode> finalProducer = producer;
-
-                while (it.hasNext()) {
-                    finalProducer.send(new ProducerRecord<String, JsonNode>(topic, it.next()));
-                    i++;
-                }
-
-                LocalDateTime end = LocalDateTime.now();
-
-                long millis = ChronoUnit.MILLIS.between(start, end);
-
-                stats.append(allNodes.size()).append(" messages inserted in ").append(millis).append(" ms.").append(System.lineSeparator());
-            }
-        } catch (IOException e) {
-            logger.error("Error IO" + e.getMessage());
-        } finally {
-            Thread.sleep(3000);
-            logger.info(stats);
-            MetricsProducerReporter metrics = new MetricsProducerReporter(producer);
-            metrics.displayMetrics();
-            producer.close();
-        }
-    }
-
-}
+package fr.ippon.kafkaLatency.producer;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import fr.ippon.kafkaLatency.utils.Config;
+import fr.ippon.kafkaLatency.utils.MetricsProducerReporter;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.CreateTopicsResult;
+import org.apache.kafka.clients.admin.NewTopic;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.Producer;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.errors.TopicExistsException;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.apache.kafka.connect.json.JsonSerializer;
+import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * IPPON 2018.
+ */
+public class AlimKafkaAsync {
+
+    private static final ClassLoader classLoader = AlimKafkaAsync.class.getClassLoader();
+
+    private final static Logger logger = Logger.getLogger(AlimKafkaAsync.class);
+
+    public static void main(String[] args) throws InterruptedException {
+
+        StringBuilder stats = new StringBuilder();
+
+        Properties props = new Properties();
+
+        Producer<String, JsonNode> producer = null;
+
+        String brokers = Config.getProperty("bootstrap.servers");
+        String topic = Config.getProperty("topic");
+        String numPartitions = Config.getProperty("numPartitions");
+        String replication = Config.getProperty("replication");
+        int total = Integer.valueOf(Config.getProperty("stats.total"));
+
+        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
+
+        //Create topic if not exist
+        AdminClient adminClient = AdminClient.create(props);
+
+        NewTopic newTopic = new NewTopic(topic, Integer.valueOf(numPartitions), Integer.valueOf(replication).shortValue());
+        CreateTopicsResult createTopicsResult = adminClient.createTopics(Collections.singleton(newTopic));
+
+        try {
+            createTopicsResult.all().get();
+        } catch (ExecutionException e) {
+            if (e.getCause() instanceof TopicExistsException) {
+                logger.info("Topic already exists (delete manually to change settings) !!");
+            } else if (e.getCause() instanceof TimeoutException) {
+                logger.error("Timeout !!");
+            } else {
+                logger.error("Error !!" + e.getCause());
+            }
+        } finally {
+            adminClient.close();
+        }
+
+        try {
+
+            props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducerAsync");
+            props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
+                    StringSerializer.class.getName());
+            props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
+                    JsonSerializer.class.getName());
+
+            ObjectMapper mapper = new ObjectMapper();
+
+            producer = new KafkaProducer<String, JsonNode>(props);
+            File file = new File(Objects.requireNonNull(classLoader.getResource("listPersons.json")).getFile());
+
+            long i = 0;
+
+            List<JsonNode> allNodes = mapper.readValue(file, new TypeReference<List<JsonNode>>() {
+            });
+
+            Producer<String, JsonNode> finalProducer = producer;
+
+            while (i < total) {
+                LocalDateTime start = LocalDateTime.now();
+
+                long size = allNodes.stream().map(node -> {
+                    try {
+                        // synchronous API
+                        finalProducer.send(new ProducerRecord<String, JsonNode>(topic, node));
+                    } catch (Exception e) {
+                        logger.error("Error IO" + e.getMessage());
+                    }
+                    return null;
+                }).count();
+
+                i = i + size;
+
+                LocalDateTime end = LocalDateTime.now();
+
+                long millis = ChronoUnit.MILLIS.between(start, end);
+
+                stats.append(allNodes.size()).append(" messages inserted in ").append(millis).append(" ms.").append(System.lineSeparator());
+            }
+        } catch (IOException e) {
+            logger.error("Error IO" + e.getMessage());
+        } finally {
+            logger.info(stats);
+            MetricsProducerReporter metrics = new MetricsProducerReporter(producer);
+            metrics.displayMetrics();
+            assert producer != null;
+            producer.close();
+        }
+    }
+
+}
diff --git a/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java b/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java
similarity index 78%
rename from src/main/java/fr/ippon/kafkaLatency/AlimKafka.java
rename to src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java
index 4b0caba..f567865 100644
--- a/src/main/java/fr/ippon/kafkaLatency/AlimKafka.java
+++ b/src/main/java/fr/ippon/kafkaLatency/producer/AlimKafkaSync.java
@@ -1,129 +1,129 @@
-package fr.ippon.kafkaLatency;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import fr.ippon.kafkaLatency.model.Person;
-import fr.ippon.kafkaLatency.utils.Config;
-import fr.ippon.kafkaLatency.utils.MetricsProducerReporter;
-import org.apache.kafka.clients.admin.AdminClient;
-import org.apache.kafka.clients.admin.CreateTopicsResult;
-import org.apache.kafka.clients.admin.NewTopic;
-import org.apache.kafka.clients.producer.KafkaProducer;
-import org.apache.kafka.clients.producer.Producer;
-import org.apache.kafka.clients.producer.ProducerConfig;
-import org.apache.kafka.clients.producer.ProducerRecord;
-import org.apache.kafka.common.errors.TopicExistsException;
-import org.apache.kafka.common.serialization.StringSerializer;
-import org.apache.kafka.connect.json.JsonSerializer;
-import org.apache.log4j.Logger;
-
-import java.beans.IntrospectionException;
-import java.io.File;
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeoutException;
-
-/**
- * IPPON 2018.
- */
-public class AlimKafka {
-
-    private static ClassLoader classLoader = AlimKafka.class.getClassLoader();
-
-    private final static Logger logger = Logger.getLogger(AlimKafka.class);
-
-    public static void main(String[] args)  throws InterruptedException, IntrospectionException {
-
-        StringBuilder stats = new StringBuilder();
-
-        Properties props = new Properties();
-
-        Producer<String, JsonNode> producer = null;
-
-        String brokers = Config.getProperty("bootstrap.servers");
-        String topic = Config.getProperty("topic");
-        String numPartitions = Config.getProperty("numPartitions");
-        String replication = Config.getProperty("replication");
-        int total = Integer.valueOf(Config.getProperty("stats.total"));
-
-        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
-
-        //Create topic if not exist
-        AdminClient adminClient = AdminClient.create(props);
-
-        NewTopic newTopic = new NewTopic(topic, Integer.valueOf(numPartitions), Integer.valueOf(replication).shortValue());
-        CreateTopicsResult createTopicsResult = adminClient.createTopics(Collections.singleton(newTopic));
-
-        try {
-            createTopicsResult.all().get();
-            // real failure cause is wrapped inside the raised ExecutionException
-        } catch (ExecutionException e) {
-            if (e.getCause() instanceof TopicExistsException) {
-                logger.info("Topic already exists (delete manually to change settings) !!");
-            } else if (e.getCause() instanceof TimeoutException) {
-                logger.error("Timeout !!");
-            } else {
-                logger.error("Error !!" + e.getCause());
-            }
-        } finally {
-            adminClient.close();
-        }
-
-        try {
-            props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducer");
-            props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
-                    StringSerializer.class.getName());
-            props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
-                    JsonSerializer.class.getName());
-            props.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 4);
-            ObjectMapper mapper = new ObjectMapper();
-
-            producer = new KafkaProducer<String, JsonNode>(props);
-            List<Person> persons = null;
-
-            File file = new File(classLoader.getResource("listPersons.json").getFile());
-
-            long i = 0;
-
-            persons = mapper.readValue(file, new TypeReference<List<Person>>() {
-            });
-
-            while (i < total) {
-
-                LocalDateTime start = LocalDateTime.now();
-
-                Producer<String, JsonNode> finalProducer = producer;
-                long size = persons.parallelStream().map(person -> {
-                    try {
-                        finalProducer.send(new ProducerRecord<String, JsonNode>(topic, mapper.valueToTree(person)));
-                    } catch (Exception e) {
-                        logger.error("Error IO" + e.getMessage());
-                    }
-                    return null;
-                }).count();
-
-                i = i + size;
-                LocalDateTime end = LocalDateTime.now();
-
-                long millis = ChronoUnit.MILLIS.between(start, end);
-
-                stats.append(persons.size()).append(" messages inserted in ").append(millis).append(" ms.").append(System.lineSeparator());
-            }
-        } catch (IOException e) {
-            logger.error("Error IO" + e.getMessage());
-        } finally {
-            Thread.sleep(5000);
-            logger.info(stats);
-            MetricsProducerReporter metrics = new MetricsProducerReporter(producer);
-            metrics.displayMetrics();
-            producer.close();
-        }
-    }
-
-}
+package fr.ippon.kafkaLatency.producer;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import fr.ippon.kafkaLatency.model.Person;
+import fr.ippon.kafkaLatency.utils.Config;
+import fr.ippon.kafkaLatency.utils.MetricsProducerReporter;
+import org.apache.kafka.clients.admin.AdminClient;
+import org.apache.kafka.clients.admin.CreateTopicsResult;
+import org.apache.kafka.clients.admin.NewTopic;
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.apache.kafka.clients.producer.Producer;
+import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.clients.producer.ProducerRecord;
+import org.apache.kafka.common.errors.TopicExistsException;
+import org.apache.kafka.common.serialization.StringSerializer;
+import org.apache.kafka.connect.json.JsonSerializer;
+import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * IPPON 2018.
+ */
+public class AlimKafkaSync {
+
+    private static final ClassLoader classLoader = AlimKafkaSync.class.getClassLoader();
+
+    private final static Logger logger = Logger.getLogger(AlimKafkaSync.class);
+
+    public static void main(String[] args)  throws InterruptedException {
+
+        StringBuilder stats = new StringBuilder();
+
+        Properties props = new Properties();
+
+        Producer<String, JsonNode> producer = null;
+
+        String brokers = Config.getProperty("bootstrap.servers");
+        String topic = Config.getProperty("topic");
+        String numPartitions = Config.getProperty("numPartitions");
+        String replication = Config.getProperty("replication");
+        int total = Integer.valueOf(Config.getProperty("stats.total"));
+
+        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
+
+        //Create topic if not exist
+        AdminClient adminClient = AdminClient.create(props);
+
+        NewTopic newTopic = new NewTopic(topic, Integer.valueOf(numPartitions), Integer.valueOf(replication).shortValue());
+        CreateTopicsResult createTopicsResult = adminClient.createTopics(Collections.singleton(newTopic));
+
+        try {
+            createTopicsResult.all().get();
+        } catch (ExecutionException e) {
+            if (e.getCause() instanceof TopicExistsException) {
+                logger.info("Topic already exists (delete manually to change settings) !!");
+            } else if (e.getCause() instanceof TimeoutException) {
+                logger.error("Timeout !!");
+            } else {
+                logger.error("Error !!" + e.getCause());
+            }
+        } finally {
+            adminClient.close();
+        }
+
+        try {
+            props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducerSync");
+            props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
+                    StringSerializer.class.getName());
+            props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
+                    JsonSerializer.class.getName());
+            ObjectMapper mapper = new ObjectMapper();
+
+            producer = new KafkaProducer<String, JsonNode>(props);
+            List<Person> persons = null;
+
+            File file = new File(Objects.requireNonNull(classLoader.getResource("listPersons.json")).getFile());
+
+            long i = 0;
+
+            List<JsonNode> allNodes = mapper.readValue(file, new TypeReference<List<JsonNode>>() {
+            });
+
+            Producer<String, JsonNode> localProducer = producer;
+
+            while (i < total) {
+
+                LocalDateTime start = LocalDateTime.now();
+
+                long size = allNodes.stream().map(node -> {
+                    try {
+                        // synchronous API
+                        localProducer.send(new ProducerRecord<String, JsonNode>(topic, node)).get();
+                    } catch (Exception e) {
+                        logger.error("Error IO" + e.getMessage());
+                    }
+                    return null;
+                }).count();
+
+                i = i + size;
+                LocalDateTime end = LocalDateTime.now();
+
+                long millis = ChronoUnit.MILLIS.between(start, end);
+
+                stats.append(allNodes.size()).append(" messages inserted in ").append(millis).append(" ms.").append(System.lineSeparator());
+            }
+        } catch (IOException e) {
+            logger.error("Error IO" + e.getMessage());
+        } finally {
+            logger.info(stats);
+            MetricsProducerReporter metrics = new MetricsProducerReporter(producer);
+            metrics.displayMetrics();
+            assert producer != null;
+            producer.close();
+        }
+    }
+
+}
diff --git a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java
index 2f1461f..959ad76 100644
--- a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java
+++ b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.java
@@ -5,8 +5,6 @@ import fr.ippon.kafkaLatency.model.Person;
 import fr.ippon.kafkaLatency.utils.Config;
 import fr.ippon.kafkaLatency.utils.UtilStats;
 import org.apache.log4j.Logger;
-import org.apache.spark.SparkConf;
-import org.apache.spark.SparkContext;
 import org.apache.spark.api.java.function.MapFunction;
 import org.apache.spark.sql.Dataset;
 import org.apache.spark.sql.Encoders;
@@ -16,6 +14,7 @@ import org.apache.spark.sql.streaming.StreamingQuery;
 import org.apache.spark.sql.streaming.Trigger;
 import scala.Tuple2;
 
+import java.io.Serializable;
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
@@ -24,12 +23,13 @@ import java.util.concurrent.TimeUnit;
 /**
  * Ippon Tech 2018.
  */
-public class KafkaContinuousSpark {
+public class KafkaContinuousSpark implements Serializable {
 
-    private final static ObjectMapper mapper = new ObjectMapper();
+    private static final ObjectMapper mapper = new ObjectMapper();
     private final static Logger logger = Logger.getLogger(KafkaContinuousSpark.class);
 
     public static void main(String[] args) {
+
         StreamingQuery query = null;
         SparkSession spark = null;
 
@@ -38,20 +38,18 @@ public class KafkaContinuousSpark {
             String topic = Config.getProperty("topic");
             Integer SparkContinuousInterval = Config.getIntProperty("spark.continuous.interval");
             Integer maxPollRecords = Config.getIntProperty("max.poll.records");
+            Integer numPartitions = Config.getIntProperty("numPartitions");
 
-            UtilStats stats = new UtilStats();
 
-            SparkConf sparkConf = new SparkConf()
-                    .setMaster("local[*]")
-                    .set("spark.streaming.stopGracefullyOnShutdown", "true")
-                    .set("spark.ui.showConsoleProgress", "false")
-                    .set("spark.eventLog.enabled", "false")
-                    .set("spark.streaming.backpressure.enabled", "true")
-                    .setAppName("kafkaContinuous");
+            UtilStats stats = new UtilStats("KafkaContinuousSpark");
 
-            spark = new SparkSession(new SparkContext(sparkConf));
+            // !!! number of kafka partitions must not exceed number of cores
+            spark = SparkSession.builder()
+                    .appName("KafkaContinuousSpark")
+                    .master("local[*]")
+                    .getOrCreate();
 
-            Dataset<Tuple2<String, Timestamp>> line = spark.readStream().format("kafka")
+            Dataset<Tuple2<String, Timestamp>> source = spark.readStream().format("kafka")
                     .option("kafka.bootstrap.servers", brokers)
                     .option("subscribe", topic)
                     .option("max.poll.records", maxPollRecords)
@@ -60,42 +58,40 @@ public class KafkaContinuousSpark {
                     .select("value", "timestamp")
                     .as(Encoders.tuple(Encoders.STRING(), Encoders.TIMESTAMP()));
 
-            Dataset<Long> json = line.map((MapFunction<Tuple2<String, Timestamp>, Long>) t -> {
+            Dataset<Person> ds = source.map((MapFunction<Tuple2<String, Timestamp>, Person>) t -> {
                 LocalDateTime now = LocalDateTime.now();
 
                 LocalDateTime parsedDate = t._2.toLocalDateTime();
 
                 long millis = ChronoUnit.MILLIS.between(parsedDate, now);
 
-                mapper.readValue(t._1, Person.class);
+                Person p = mapper.readValue(t._1, Person.class);
 
                 stats.treatStats(millis);
 
-                return millis;
-            }, Encoders.bean(Long.class));
+                return p;
+            }, Encoders.bean(Person.class));
 
 
-            query = json.writeStream()
+            query = ds.writeStream()
                     .outputMode(OutputMode.Append())
                     .format("memory").queryName("test")
                     .trigger(Trigger.Continuous(SparkContinuousInterval, TimeUnit.MILLISECONDS))
                     .start();
 
-            //await
             query.awaitTermination();
 
         } catch (Exception e) {
             logger.error("Error " + e.getMessage());
+
+            assert query != null;
             if (query.isActive()) {
                 query.stop();
-                spark.close();
+                spark.stop();
             }
-        }
-    }
-}
-
-
-
 
+        }
 
+    }
 
+}
\ No newline at end of file
diff --git a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java
index 7731d37..7f3aa4a 100644
--- a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java
+++ b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaFlink.java
@@ -12,7 +12,7 @@ import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
 import org.apache.flink.streaming.api.functions.AssignerWithPunctuatedWatermarks;
 import org.apache.flink.streaming.api.watermark.Watermark;
 import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer010;
-import org.apache.kafka.clients.producer.ProducerConfig;
+import org.apache.kafka.clients.consumer.ConsumerConfig;
 import org.apache.log4j.Logger;
 
 import java.time.Instant;
@@ -28,9 +28,10 @@ public class KafkaFlink {
 
     private final static Logger logger = Logger.getLogger(KafkaFlink.class);
 
+    private static final ObjectMapper mapper = new ObjectMapper();
 
     public static class TimestampsFetcher implements AssignerWithPunctuatedWatermarks<String> {
-        UtilStats stats = new UtilStats();
+        final UtilStats stats = new UtilStats("KafkaFlink");
 
         @Override
         public long extractTimestamp(String element, long previousElementTimestamp) {
@@ -61,13 +62,12 @@ public class KafkaFlink {
             // set up the streaming execution environment
             final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
             env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
-            env.enableCheckpointing(100);
+            env.enableCheckpointing(150);
             Properties properties = new Properties();
             properties.setProperty("bootstrap.servers", brokers);
             properties.setProperty("auto.offset.reset", "latest");
 
-            properties.setProperty(ProducerConfig.CLIENT_ID_CONFIG, "flink");
-
+            properties.setProperty(ConsumerConfig.GROUP_ID_CONFIG, "Flink");
 
             FlinkKafkaConsumer010<String> myConsumer = new FlinkKafkaConsumer010<>(topic, new SimpleStringSchema(), properties);
 
@@ -75,11 +75,9 @@ public class KafkaFlink {
 
             myConsumer.assignTimestampsAndWatermarks(new TimestampsFetcher());
 
-            input.map((MapFunction<String, Person>) (String value) -> {
-                ObjectMapper mapper = new ObjectMapper();
-                return mapper.readValue(value, Person.class);
-
-            }).setParallelism(numPartitions).countWindowAll(1000);
+            input.map((MapFunction<String, Person>) (String value) ->
+                    mapper.readValue(value, Person.class)
+            ).setParallelism(numPartitions).countWindowAll(1000);
 
             // execute program
             env.execute("Flink Streaming Kafka");
diff --git a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java
similarity index 73%
rename from src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java
rename to src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java
index 11bb330..d7e3839 100644
--- a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSpark.java
+++ b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaSparkStreaming.java
@@ -18,7 +18,6 @@ import org.apache.spark.streaming.kafka010.ConsumerStrategies;
 import org.apache.spark.streaming.kafka010.KafkaUtils;
 import org.apache.spark.streaming.kafka010.LocationStrategies;
 
-import java.io.IOException;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
@@ -27,22 +26,25 @@ import java.util.*;
 /**
  * Ippon Tech 2018.
  */
-public class KafkaSpark {
-    static ObjectMapper mapper = new ObjectMapper();
+public class KafkaSparkStreaming {
+    private static final ObjectMapper mapper = new ObjectMapper();
 
-    private final static Logger logger = Logger.getLogger(KafkaContinuousSpark.class);
+    private final static Logger logger = Logger.getLogger(KafkaSparkStreaming.class);
 
-    static Function function = (Function<ConsumerRecord<String, String>, Person>) cr -> {
-            LocalDateTime kafkaTimestamp = LocalDateTime.ofInstant(Instant.ofEpochMilli(cr.timestamp()), TimeZone
-                    .getDefault().toZoneId());
-            LocalDateTime now = LocalDateTime.now();
+    private final static UtilStats stats = new UtilStats("KafkaSparkStreaming");
 
-            long millis = ChronoUnit.MILLIS.between(kafkaTimestamp, now);
-            Person p = mapper.readValue(cr.value(), Person.class);
+    private static final Function function = (Function<ConsumerRecord<String, String>, Long>) cr -> {
+        LocalDateTime kafkaTimestamp = LocalDateTime.ofInstant(Instant.ofEpochMilli(cr.timestamp()), TimeZone
+                .getDefault().toZoneId());
+        LocalDateTime now = LocalDateTime.now();
 
-            UtilStats.treatStats(millis);
+        long millis = ChronoUnit.MILLIS.between(kafkaTimestamp, now);
+        Person p = mapper.readValue(cr.value(), Person.class);
+        // Compute data here
 
-        return p;
+        stats.treatStats(millis);
+
+        return millis;
 
     };
 
@@ -54,27 +56,24 @@ public class KafkaSpark {
             Integer SparkStreamingInterval = Config.getIntProperty("spark.streaming.interval");
             Integer maxPollRecords = Config.getIntProperty("max.poll.records");
 
+            // !!! number of kafka partitions must not exceed number of cores
             SparkConf sparkConf = new SparkConf()
                     .setMaster("local[*]")
                     .set("spark.streaming.stopGracefullyOnShutdown", "true")
-                    .set("spark.ui.enabled", "false")
-                    .set("spark.eventLog.enabled", "false")
-                    .set("spark.streaming.backpressure.enabled", "true")
                     .setAppName("kafkaSparkStreaming");
 
             sc = new JavaStreamingContext(sparkConf, Durations.milliseconds(SparkStreamingInterval));
 
-
             Map<String, Object> kafkaParams = new HashMap<>();
 
             kafkaParams.put("bootstrap.servers", brokers);
             kafkaParams.put("key.deserializer", StringDeserializer.class);
             kafkaParams.put("value.deserializer", StringDeserializer.class);
-            kafkaParams.put("group.id", "KafkaSpark");
+            kafkaParams.put("group.id", "KafkaSparkStreaming");
             kafkaParams.put("auto.offset.reset", "latest");
             kafkaParams.put("max.poll.records", maxPollRecords);
 
-            Collection<String> topics = Arrays.asList(topic);
+            Collection<String> topics = Collections.singletonList(topic);
 
             final JavaInputDStream<ConsumerRecord<String, String>> stream =
                     KafkaUtils.createDirectStream(
@@ -90,6 +89,7 @@ public class KafkaSpark {
 
         } catch (Exception e) {
             logger.error("Error " + e.getMessage());
+            assert sc != null;
             sc.stop(true, true);
         }
     }
diff --git a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java
similarity index 56%
rename from src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java
rename to src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java
index f1bbff8..281f820 100644
--- a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStreaming.java
+++ b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStream.java
@@ -11,7 +11,6 @@ import org.apache.kafka.common.serialization.Serdes;
 import org.apache.kafka.streams.KafkaStreams;
 import org.apache.kafka.streams.StreamsConfig;
 import org.apache.kafka.streams.kstream.KStreamBuilder;
-import org.apache.kafka.streams.kstream.Predicate;
 import org.apache.kafka.streams.processor.TimestampExtractor;
 import org.apache.log4j.Logger;
 
@@ -25,14 +24,14 @@ import java.util.TimeZone;
 /**
  * Ippon Tech 2018.
  */
-public class KafkaStreaming  {
-    static ObjectMapper mapper = new ObjectMapper();
+public class KafkaStream {
+    private static final ObjectMapper mapper = new ObjectMapper();
 
-    private final static Logger logger = Logger.getLogger(KafkaStreaming.class);
+    private final static Logger logger = Logger.getLogger(KafkaStream.class);
 
     public static class MyTimestampExtractor implements TimestampExtractor {
 
-        UtilStats stats = new UtilStats();
+        final UtilStats stats = new UtilStats("KafkaStream");
 
         public MyTimestampExtractor() {
             super();
@@ -55,43 +54,38 @@ public class KafkaStreaming  {
     }
 
     public static void main(String[] args) {
+        KafkaStreams streams;
         try {
 
 
-        String brokers = Config.getProperty("bootstrap.servers");
-        String topic = Config.getProperty("topic");
-        String numPartitions = Config.getProperty("numPartitions");
+            String brokers = Config.getProperty("bootstrap.servers");
+            String topic = Config.getProperty("topic");
+            String numPartitions = Config.getProperty("numPartitions");
 
-        Properties props = new Properties();
+            Properties props = new Properties();
 
-        props.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka stream");
-        props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
-        props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
-        props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
-        props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
-        props.put(StreamsConfig.DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG, MyTimestampExtractor.class);
-        props.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, numPartitions);
+            props.put(StreamsConfig.APPLICATION_ID_CONFIG, "kafka stream");
+            props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);
+            props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
+            props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
+            props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
+            props.put(StreamsConfig.DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG, MyTimestampExtractor.class);
+            props.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, numPartitions);
 
-        KStreamBuilder builder = new KStreamBuilder();
+            KStreamBuilder builder = new KStreamBuilder();
 
-        builder.stream(Serdes.String(), Serdes.String(), topic).filter(new Predicate<String, String>() {
-            @Override
-            public boolean test(String key, String value) {
+            builder.stream(Serdes.String(), Serdes.String(), topic).filter((key, value) -> {
                 try {
-
-                    mapper.readValue(value, Person.class);
-
+                    Person p = mapper.readValue(value, Person.class);
+                    // Compute data here
                 } catch (IOException e) {
                     logger.error("Error " + e.getMessage());
                 }
                 return false;
-            }
-        }).print();
-
+            }).print();
 
-        KafkaStreams streams = new KafkaStreams(builder, props);
-
-        streams.start();
+            streams = new KafkaStreams(builder, props);
+            streams.start();
 
         } catch (Exception e) {
             logger.error("Error " + e.getMessage());
@@ -99,5 +93,4 @@ public class KafkaStreaming  {
 
     }
 
-
 }
diff --git a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java
index 9687995..d148d65 100644
--- a/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java
+++ b/src/main/java/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.java
@@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
  */
 public class KafkaStructuredSpark {
 
-    private static ObjectMapper mapper = new ObjectMapper();
+    private static final ObjectMapper mapper = new ObjectMapper();
 
     private final static Logger logger = Logger.getLogger(KafkaStructuredSpark.class);
 
@@ -41,28 +41,27 @@ public class KafkaStructuredSpark {
             Integer maxPollRecords = Config.getIntProperty("max.poll.records");
             Integer interval = Config.getIntProperty("spark.structured.interval");
 
-            UtilStats stats = new UtilStats();
+            UtilStats stats = new UtilStats("KafkaStructuredSpark");
 
+            // !!! number of kafka partitions must not exceed number of cores
             SparkConf sparkConf = new SparkConf()
                     .setMaster("local[*]")
                     .set("spark.streaming.stopGracefullyOnShutdown", "true")
-                    .set("spark.ui.showConsoleProgress", "false")
-                    .set("spark.eventLog.enabled", "false")
-                    .set("spark.streaming.backpressure.enabled", "true")
                     .setAppName("kafkaStructured");
 
             spark = new SparkSession(new SparkContext(sparkConf));
 
-            Dataset<Tuple2<String, Timestamp>> line = spark.readStream().format("kafka")
+            Dataset<Tuple2<String, Timestamp>> source = spark.readStream()
+                    .format("kafka")
                     .option("kafka.bootstrap.servers", brokers)
                     .option("subscribe", topic)
                     .option("max.poll.records", maxPollRecords)
                     .option("startingOffsets", "latest")
-                    .load()
+                     .load()
                     .select("value", "timestamp")
                     .as(Encoders.tuple(Encoders.STRING(), Encoders.TIMESTAMP()));
 
-            Dataset<Person> json = line.map((MapFunction<Tuple2<String, Timestamp>, Person>) t -> {
+            Dataset<Person> json = source.map((MapFunction<Tuple2<String, Timestamp>, Person>) t -> {
                 LocalDateTime now = LocalDateTime.now();
 
                 LocalDateTime parsedDate = t._2.toLocalDateTime();
@@ -78,7 +77,7 @@ public class KafkaStructuredSpark {
 
             query = json.writeStream()
                     .outputMode(OutputMode.Append())
-                    .format("memory").queryName("test")
+                    .format("memory").queryName("structured")
                     .trigger(Trigger.ProcessingTime(interval, TimeUnit.MILLISECONDS))
                     .start();
 
@@ -86,6 +85,7 @@ public class KafkaStructuredSpark {
 
         } catch (Exception e) {
             logger.error("Error " + e.getMessage());
+            assert query != null;
             if (query.isActive()) {
                 query.stop();
                 spark.close();
diff --git a/src/main/java/fr/ippon/kafkaLatency/utils/Config.java b/src/main/java/fr/ippon/kafkaLatency/utils/Config.java
index 1efe43f..fee37ab 100644
--- a/src/main/java/fr/ippon/kafkaLatency/utils/Config.java
+++ b/src/main/java/fr/ippon/kafkaLatency/utils/Config.java
@@ -1,16 +1,16 @@
 package fr.ippon.kafkaLatency.utils;
 
-import org.apache.commons.beanutils.PropertyUtilsBean;
+import fr.ippon.kafkaLatency.streaming.KafkaContinuousSpark;
 import org.apache.commons.configuration2.PropertiesConfiguration;
 import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
 import org.apache.commons.configuration2.builder.fluent.Parameters;
 import org.apache.commons.configuration2.ex.ConfigurationException;
-
-import java.beans.IntrospectionException;
+import org.apache.log4j.Logger;
 
 public class Config {
 
-    private static PropertiesConfiguration config;
+    private static final PropertiesConfiguration config;
+    private final static Logger logger = Logger.getLogger(KafkaContinuousSpark.class);
 
     static {
         try {
@@ -23,16 +23,16 @@ public class Config {
             config = builder.getConfiguration();
 
         } catch (ConfigurationException cex) {
-
+            logger.error("Error " + cex.getMessage());
         }
     }
 
-    static public String getProperty(String key) throws IntrospectionException {
-        return (String)config.getProperty(key);
+    static public String getProperty(String key) {
+        return (String) config.getProperty(key);
     }
 
 
-    static public Integer getIntProperty(String key) throws IntrospectionException {
+    static public Integer getIntProperty(String key)  {
         return Integer.valueOf(getProperty(key));
     }
 
diff --git a/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java b/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java
index 63c0d49..8ceef9e 100644
--- a/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java
+++ b/src/main/java/fr/ippon/kafkaLatency/utils/UtilStats.java
@@ -2,7 +2,6 @@ package fr.ippon.kafkaLatency.utils;
 
 import org.apache.log4j.Logger;
 
-import java.beans.IntrospectionException;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -13,48 +12,49 @@ import java.util.LongSummaryStatistics;
  * IPPON 2018.
  */
 public class UtilStats implements Serializable {
-    static List<Long> lStep = Collections.synchronizedList(new ArrayList());
-    static List<Long> lTotal = Collections.synchronizedList(new ArrayList());
 
-    private static long step;
-    private static long total;
+    private static final List<Long> lStep = Collections.synchronizedList(new ArrayList());
+    private static final List<Long> lTotal = Collections.synchronizedList(new ArrayList());
+
+    private final long step;
+    private long total;
+    private String benchName;
 
     private final static Logger logger = Logger.getLogger(UtilStats.class);
 
-    static {
-        try {
-            step = Integer.valueOf(Config.getProperty("stats.step"));
-            total = Integer.valueOf(Config.getProperty("stats.total"));
-        } catch (IntrospectionException e) {
-            logger.error("Error " + e.getMessage());
-        }
+    public UtilStats(String benchName) {
 
+        step = Integer.valueOf(Config.getProperty("stats.step"));
+        total = Integer.valueOf(Config.getProperty("stats.total"));
+
+        this.benchName = benchName;
     }
 
-    public static void treatStats(long millis) {
-        synchronized (lTotal) {
-            synchronized (lStep) {
-                lStep.add(millis);
+    public void treatStats(long millis) {
+        synchronized (lStep) {
+            lStep.add(millis);
 
-                if (lStep.size() > (step - 1)) {
-                    LongSummaryStatistics stats = lStep.stream()
-                            .mapToLong((x) -> x)
-                            .summaryStatistics();
+            if (lStep.size() > (step - 1)) {
+                LongSummaryStatistics stats = lStep.parallelStream()
+                        .mapToLong((x) -> x)
+                        .summaryStatistics();
 
-                    logger.info("Stats : " + stats);
-                    lStep.clear();
-                }
+                logger.info("Stats (" + benchName + ") : " + stats);
+                lStep.clear();
             }
+
             lTotal.add(millis);
             if (lTotal.size() > (total - 1)) {
-                LongSummaryStatistics stats = lTotal.stream()
+                LongSummaryStatistics stats = lTotal.parallelStream()
                         .mapToLong((x) -> x)
                         .summaryStatistics();
 
-                logger.info("Stats total: " + stats);
+                logger.info("Stats total (" + benchName + ") : " + stats);
+
                 lTotal.clear();
             }
 
         }
     }
+
 }
diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties
index 6169112..36d058c 100644
--- a/src/main/resources/config.properties
+++ b/src/main/resources/config.properties
@@ -1,13 +1,10 @@
 topic=latency-tests
 bootstrap.servers=localhost:9092
-#bootstrap.servers=192.168.99.100:32400
-numPartitions=1
-#numPartitions=3
+numPartitions=3
 replication=1
-#replication=3
-stats.step=1000
+stats.step=10000
 stats.total=100000
 max.poll.records=1000
 spark.continuous.interval=300
-spark.structured.interval=150
+spark.structured.interval=200
 spark.streaming.interval=50
diff --git a/src/main/resources/log4j.xml b/src/main/resources/log4j.xml
index 1d493b1..ba331cb 100644
--- a/src/main/resources/log4j.xml
+++ b/src/main/resources/log4j.xml
@@ -8,22 +8,22 @@
 	<appender name="console" class="org.apache.log4j.ConsoleAppender">
 		<param name="Target" value="System.out"/>
 		<layout class="org.apache.log4j.PatternLayout">
-			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t [%-5p] %c{2} - %m%n"/>
+			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t [%-5p] - %m%n"/>
 		</layout>
 	</appender>
 
 	<appender name="file" class="org.apache.log4j.RollingFileAppender">
 		<param name="append" value="true"/>
 		<param name="file" value="./kafka-bench.log"/>
-		<param name="maxBackupIndex" value="10"/>
-		<param name="maxFileSize" value="10MB"/>
+		<param name="maxBackupIndex" value="6"/>
+		<param name="maxFileSize" value="2MB"/>
 		<layout class="org.apache.log4j.PatternLayout">
-			<param name="ConversionPattern" value="[%-5p] - %d{dd/MM/yyyy-HH:mm:ss} - %c{2} - %m%n"/>
+			<param name="ConversionPattern" value="[%-5p] - %d{dd/MM/yyyy-HH:mm:ss} - %m%n"/>
 		</layout>
 	</appender>
 	<appender name="async_file" class="org.apache.log4j.AsyncAppender">
-		<param name="BufferSize" value="128"/>
-		<param name="Blocking" value="false"/>
+		<param name="BufferSize" value="60"/>
+		<param name="Blocking" value="true"/>
 		<appender-ref ref="file"/>
 	</appender>
 
@@ -38,12 +38,22 @@
 		<appender-ref ref="console"/>
 		<appender-ref ref="async_file"/>
 	</logger>
+    <logger name="org.apache.spark" additivity="false">
+        <level value="warn"/>
+        <appender-ref ref="console"/>
+        <appender-ref ref="async_file"/>
+    </logger>
 	<logger name="org.apache.spark.sql.kafka010" additivity="false">
 		<level value="error"/>
 		<appender-ref ref="console"/>
 		<appender-ref ref="async_file"/>
-
 	</logger>
+    <logger name="fr.ippon.kafkaLatency" additivity="false">
+        <level value="info"/>
+        <appender-ref ref="console"/>
+        <appender-ref ref="async_file"/>
+    </logger>
+
 	<logger name="org.apache.commons.beanutils" additivity="false">
 		<level value="error"/>
 		<appender-ref ref="console"/>
diff --git a/target/classes/config.properties b/target/classes/config.properties
index 95908d6..36d058c 100644
--- a/target/classes/config.properties
+++ b/target/classes/config.properties
@@ -1,11 +1,10 @@
-topic=realtime.persons
+topic=latency-tests
 bootstrap.servers=localhost:9092
-#bootstrap.servers=192.168.99.100:32400
-numPartitions=1
+numPartitions=3
 replication=1
-stats.step=1000
+stats.step=10000
 stats.total=100000
 max.poll.records=1000
 spark.continuous.interval=300
-spark.structured.interval=150
+spark.structured.interval=200
 spark.streaming.interval=50
diff --git a/target/classes/fr/ippon/kafkaLatency/AlimKafka$1.class b/target/classes/fr/ippon/kafkaLatency/AlimKafka$1.class
deleted file mode 100644
index 7bbe62deab2c5288a0aad9c26592d01782042363..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 588
zcmb7BO-lnY5Phk&YiqTBRy~R6p$ZxWZ!HBW3gRkar58bn+w7V)n=RR_=+E*bc<=}K
zqr}-N-b75uyqU-3WgdC|czpwKh_wnPu;^jQ!!kpurHpcIhKa^@kD=H}`jVmMD<dzm
z_)gkuai@t{@RLC3p0FyfzsaJzS1CjF)EH?yTBNC@a?=kjSEEs4_)vsH;R`2C@WhX_
ziqCRl>!8U{?yATLmst{z{2+;WC{icwW32f=1jCfB2Z@#3J&h#4rf?-gX-P@8{DF87
zJabBOU!|_~%Y!j_(fm?c(rUJ8GgP`sW&?Sma!<2A6Yb@KWc%0zI!Tp@&ZWCg`X1_4
ztYEc@A|@F&{`AGL`!6R9>wjp{m&8IDhI-@X%eEFK;$3HH%I0<t`zX+V=8MsxISEUY
zal)LL+<5_erlbImVrfj?Vv6$WR|CqJrm9GF-Zg{SG1f3QX6Lbh3S|}QE)W7!pBz`2
AKmY&$

diff --git a/target/classes/fr/ippon/kafkaLatency/AlimKafka.class b/target/classes/fr/ippon/kafkaLatency/AlimKafka.class
deleted file mode 100644
index aeecd2848f161a9a90a0d1b0e3a08ddba224f57a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 8102
zcmcgxd3+q#UH|^pl4i9U$@1Egy@`+Y5#Q1#v17-QliHT;ME3fKBwMj_G^5o>8hdwV
zvomX3&YdRErY%rt=v^pnF?SP(teps&w%jEJS}=i72<0qCp+KRegqrW08STzmk`@1h
zKKjgi^WN|M?(5Bd`TH+_9>8XKDu(-TUc(D9MAZ1pG1TFF6fee5#)T-}6U8%8yf=!A
zF}#GA)nh`#uPCTrjp6fnMZ*`=;um9>hcCtOYxs4w{2MX+CVnf1-^TB#*Dq`M-53&h
zRl`>raU8!F#qY=P2l%RnuSM~PYWhb}Tv9yzv3k6w9)A+WpGNU|6o01S>oNQ}{vwJu
zH2h^0-%u3)O2c2rkWx(lO$;~TZ#Dd#!u|JAd^3iBz(2<DPx$8;HsM<u{w0QOIIqC}
zRl~Pq_&5A}6Sm_&;#9($P52)EM?KzZ#Q);^F+MJHS3oXAq7qT#oT${rq+S~8d4zxS
z-yIW8qM9_ua6n?}(bOb5MV02Lw8U_i%+;ioBxPO<0}|(^%-3W=40o%YHcBMzlw1~S
zvPhu!=JRH;Cu=y4=?I!KYL>Q*VY4V$m_A{gGE!M1KbrDD{EcowL)IQ0RUnD9T^vmr
z1tT+NrntEIL@MoVDWL6E-g0jj%vrncsGzRL9ySGY(^lR*Sjr8V#Q|d|%awTA&KTLF
zM$uC5!D5{|W|5)g>5*c}DirK|>ZCDp(nuSwna_-;c4n>Iezib4bveVz3)<J-6XLhu
zEn4}}Zbeu~W1YWMa;<DCW9KuaV$saIsXb@R4A<=Zo--M<peDpu@3=<MRkC^FyH?Jm
zP-Jm8i4X9NFwG-Y-pC#<+QX%c(!<8E9z0G{nXE+;PO1<9r6!>j%Z_!HT**Ev$IK5?
zS2-)2RRTBUj6y+S>_}(qTx!H{T(fv4mrb28GAA9XVc2kuAuB(eIy7{`%(w?UaH7<B
ziu**-8j>|_Ij*8NVku3x_&b)J+RJyYi^YREle)_A;4L#KTWQTn9q_>>rRXyYc9Fah
zOIrnP@1d|F>x|+k(axX7F20ss?gm=+oXj`cu9B6d{}FLLbypxvdq^VEr=+fBIs}Lk
zAh3WoRJ2c01<IeQZX37(QMq=(%FuB6QtmL#Ybj$BxT$CsvR1}WuO5_ZWT}^4?ij;4
zE8pW;@u~*);8HuQ(2B9Vd3wO7xNc_G@J}8LKzS^lDVoa3)Jdn$bV^zJ;ilOT^h`NK
zRPD7<HC~vEENf<TliIAf>h`IsoXsuw(FqSS(z|ab6I()tQ?9su1`o^eKsI&Q^I-2_
zbH7V}r*nJhK*JNP6)Y2)Bs95Blk1uPHCfF3uE`Q+WM)_9Vdg+)&x!{+nk?018Eu|5
zazn$$DwQWz-6;6<+G|ij_qD5_CNkfS#6foQV!%I4-33wQEmmaWdV?S6f>mz^HB&#m
zaXXWdpNnJtcBz;#Rs1s_RMKdt3K<<4Fc&SnGJJx76fE#|yd+u;L&3Zu+jbqdXcRgf
zvv`VD)Fi3Pa#_JBVls7|PS<8!X|ht6RdRzat7VPg#!%^)C1v*5`4MYWm$kBv#@A)N
zY!IxO@qBGu>9SEeD4TR@lG5cyxk;CsWfT2Jm(6mECR=pbD!1ygO-a9|D&tiPg)Ut}
zYiydzgq_PVPn*S}U35}jDDOE#-*+lT)L~#qu-)5B8d-+#@OaYnfRbw&38rf%b4I>o
zWV7Q**G^`}Sc1)@W4bPjnzJsse7Ppub-7JgU2m9{VO6K>l3St4zzCLjSeJLGlhHkj
zNAG=y?9^q4?9!!2b_*K);?-$UA<bT$rM-hh+j7zzS9Z3HEQ=T`)s~r5FbU)(*OZ@%
z`zr@E*`v!|MXmLeku8}uI5$p%lbuS&O`T9hP$iivCh8z(oawakog-Ombj<B6nh%yt
zYP^%7(n%|-gUs*B`R)*GxQ4<iNKNJB%EDfwAmwOxva#~45>#3p@5BR?lNH|elbqA3
z<j|y7XAiJnle8`eWVbqdkWJ4lJ<lpS@F6+O_^p~=Wmiq^(xp%Obs3N&B)4laELpn8
z>|tkagB)#@K@NAf$}wGz%RQRhtIK_Izb@~T2Q)Es8Ip`H!(!?v${OVpBdjIKoas2m
zsOcoFJgw@Q!<;b0cgQH4i)7AWXpQOYCU$FbLYI@m8oFtEDX!W~C<Wwn$zzzAo}I&_
z5<`7O#cg{J>0&GQxrRK_XJ+i;ur398P?0L?;s`6OPp3B13YJYTKqY7DQj$};oR%}x
zwZ~~FfeY5p?l{$;3Z3`k<Z9=qG#rAPW+dhVPi+xuq#hV6+Nb?)d}&pZ-aPxeVyQrL
zhw{jB4`9eN@=l5nMcXO(;T3{eF}>=1+xy9!rD4=`gEBHMSiN>?p$*r?N+&n3mO<|t
zqIntQ5M6c6ENGNWJi^Q!wes#!m3X`h3LCyTg%W+?)-Zyg7>76uR>GWBDt3e4y$N;)
zIIgIa-LtlWJ8PQAm@~!}yUJrfYjc>pKqbBX>Xy^ysl}t%V`sCzN!Z{vIxHEiD5||(
z89rSriFdHyRF?%k+=L4DhlQ!4o?V!!K1bwpSksi1rc;GqIK6DTx8#<J>V~p%s$)+9
zBUZW++Y@4~I!DDU^_i^g(8^H)^%x~JU04HI@qW@<7@`-x&oa$f`4O9Xo=%6<f4x`m
z*`BEjnYz+-gaHFnh57TBs+XM__*&z5dF4v@sB8O6R|+1`;#Iq<4Db5RyB<|=(8y5(
z?Q46(%v8f75jJ<V%kys1zK?m_guVy(k<8nQ*I5cy%q)1`bW=zA(#pv^-hy|ZF~29R
z(QhD%^6y5~B?Yl?S3qI%B0IyKgt^{KxxD$L2KeYRM@(M&GbTN^s+fwG_+9VR%RZee
zZ=V)iKj|`4K`2g3!6?$R%`7=Kja&%a3oOT5RV@%VyJIpgXRpY3(-=Hhis86C<mIL5
zlWNV~X<E_h>5^Hd*k}Gf?>zx0p7<lByw`xG_68FbXr2wGYKQvfCy;6$o&iA^eXVvG
ziW$3<XFlL}Cw^dA;t}$!=9)Qvv@o)%9@e|OeS}vc2JC^}bh?+hb(!xLGeMGPZOC*_
zn<g{qZGi{Y0uKcEgFE94n~JH$wc$s{V3w}tg2ik1g)MpIcDP#@=LaJCTQe_sX1}T2
z(6!l=hd`L#7&=solQm6hwvNadP^oM326duk*m4S4V?6j0#482U$pODJWD@Xd@PIu~
zG?`x}6%=ZT7<aRD-j#0$)7SB-VXL^RbG&rRoDfRgv)m{BK5#M-crF&Y>{W_Si>esm
zFQSRbByeR8q;oV9*#Gv)uSMY$=wYZWm*L9Nt;xf>JR*<l_*wiM(`Pj~S@~1^rj<&2
zpD(C&W5meNx(wx}T=h+pC+Wp$+df&MbzcpW4iNbL|D8sDIBPnqe8}m(YfPc+A5_^h
z3|@ovs+&H^tDg-!dVslyskGm6O{(TylNVf1<296P<q?EB*XiJ}oS*6M<2UpOzp(Q@
z#@Ti1BF?c6qCS1_Y4R<_Q8?DGzW{ljlL$umZ15IWVw7{;2f!FCzBS?mP7;cT>z_eA
z(IT>U0+C}EFeg2MI*#=R<Y2tvBDAi$cvKDb@kTW?#A9mE;!PYbLNB9vOLSwrAyHSx
z+`)|((c0BGfqBOg^$DI<+X){megX5lVu{8C&o3yWt*a@~R7QIl3kMU8Wh^>}2fFkG
z4_x;}T>lZYoX6t$k}{T_!<JxmS+JTcWBEBG2@tRxUs1+N52%b)W!%910A+Jmvo}jL
zzp^pDI=;r^F}^mwu8j5md_#O=W!^zfJJs?8QdGf>UHSxWI=1lwZayeo%@f#k>^wHd
zZz*F-8Cx&l)~=Sut#cE4qGbZx2;Wsk_ZP6etGRt{TlDD<ejMgS+}1U(qbr_hehK`1
zk%&_(`pb9+_`A%G2p>BITj#gWZJ%#!ovVP`&SO_%UZSmxo~`X0)G=Nc%h(g&O9|Vl
ztUKa&a&{5Dd=8$w{NV-IcM)l-Vgpq*fdj`nF5sZA$3q=2fmiNx$am=>UG)XJ>gVX|
z>h0iI-?eCZutXwJMnEdD=#}RY#e+DDC;2Ou8ZXh?p2SzY@e*G1#y8|ec^!9wV`M2H
zugjZij4X{L)kx>2_ewkVaK3@~I?zfNkMp;y1a3x>zf`TkW_02fbYm-aqYL}^8<mOM
zNO1>g?#E+Dlj<%!g&zDcAwEi6pT%B0hdas3eteDlmpHzGL--~R<6GqB+Z?}xKD>#3
zyoEl-(||PLh%CUMEa7iaNp>}xaj$H}{jv{+^z%A?H%z$)BT__8#$n6jD9F?N4DkWD
zavmjl5#us}v+^Z8B(LIO`6?cf*YGH%KP6wsX?c_TmvJ`IfQKTjcsSCAM<UnbQEFj4
zvYP81T;Iy|?Ofl*^*xk~(JT#&*r(8oEOOAv#c||eV;*@KM1fj}lbdZQ!ohs<(*c*e
zZRBb>N?dEFOrOFjoaWgip2ZoAqnWZjLESxs7E1Ui9wyve^4x?+_@<NFC8YKkbn+Rj
zku!gmP}u{I^E?oZ+)mBEi`k|%vV}Z8%`6j-Y{n0et2szeq94S&Y2hU0dk<&zSQA->
zXE<v>XJirH%bAAmNE6<N_tW<K<SqOVZP-Xne*-^)4=@!zD3|b~_%TxdASos>Cy@JD
z%I(YZ<7f`3K1-?}BGhNlbeW9l8a}MyBN{%c;bR&;UilXdpV0704L<=+fATFX<g@L2
zSbT?uPc>d<zHFWSsD_`?@M#U7sRPuJw?mB|j_}#<qK9Nw<EP1K12uLIKf_-{SzM_{
zmEb?e)q0M%uAjibu?-tL$~bZXM_<BV1cT?WqO0!80B1HnRta!<&ddG_un>1sAF4LA
zd-%q%fOTLYYeItTZlQ%$t=P=HglF%cr=>{M^C?a^Q#NC0aHjkx;>~^mzZhs)Lu63H
zFD<3vK3Azu9o_+8Ui^3&_q@Oidi)~peF2MAr4o-D^)ohb1COmCrsp`1;CbB7G0xdG
cj`S>fRGyH>$k})Jrs~;$6869FUHtd|0RS~EO#lD@

diff --git a/target/classes/fr/ippon/kafkaLatency/AlimKafkaOptim.class b/target/classes/fr/ippon/kafkaLatency/AlimKafkaOptim.class
deleted file mode 100644
index 1439273dea8f00455c74de0177224f66c1cc129b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6706
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
Levb15e*XUf@#}mW

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaContinuousSpark.class
index b2464663c15ae3bbb221f3f782ace675c11788cf..a6317b7995d5b7d09db197b57ad90b88e4d9a09c 100644
GIT binary patch
delta 2810
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

delta 3177
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%0DMH61YV!VPS{AgK<H?fR8uVLRS_@%Luve8Oj
ztfJxkFt|L4wW$hk;~L91&ULsRF67{sxPc`%KeJv&65AOv!|@_^u#~|8pW#4mg2D!S
za5HxDGwun@z%J}&Y@Ft6+`^K^&V0BPx3N9O2X4n6i7gt%7r0ZVgGS&kB=<7h_VGd<
z^8q7w|JR7kM)nV^eaPXv6dX`+kAiza3hwh|YwZ610U+Wfb|Z&*Plbbp{<MZl2Uk7L
z--Z06B}3kLj(JX{?sw4G!(+dpP%Z*?urMdNC_CdY8u?(8zSzN%9?W2QsotEDC$QY2
zFH6bgEHBqrq~s!&SL&@PIj6$qVAUz8DPSGx$Ld!7>f>1R40~{WLO1o`0X)d-`#HZD
z4EK2yDtL&r%ihOQz8N<>XGHergKQ#$`NTe~ZLE9}*POyS2L@xXZ46^8Fv)!k?W{LX
zp;TY*pkqbFiahSYPDz4C_~bxC7o@CA=c3L;7G}fCNGr#DR41`8g@N&0Wp<OQEek9i
zW`IfH*5DC*hRtN56rW|u#fOXVIeebi9_5{G-Zhm`@YqE|B~6+@Za+3~n{@S}T@Ur4
zyBE{sh@n(cG&Ttojps5Kv&}E?M;g9J4>8w3^Z*^A2ieol_&b}A{G8+a1zyE#jLz3T
E0#RJ@!2kdN

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink$TimestampsFetcher.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink$TimestampsFetcher.class
index 835236c17466f4faa0b2be211e4225ebd1d628e8..a58defc0b73e8ea532ed154f55b8ead11fe34cc0 100644
GIT binary patch
delta 837
zcmZva*-{fh6o$V^CTXT^A%;bRiovLaphgr$1G2aP3a%)E`?!E%iB&*(WmSBKynr`e
zS_Lj4B~_N!K7^NE`UsY%lN2arP0g9^>2tpS@6){!{SnQ7|NZ4F(8Wtl6Q>ntYRG5;
z^msJVt2s-brk?>D1~un6Z^H$TiwtQA!<rE;*>KsGjVi`85w0k%Y9U;+;kx3cVq9^{
zA+)sYFE2T?jZH76v#YP2V6d6pg*U<Eq=O#yr|0~k`D|{^(9CVaE@Fxa!yP6SQ--_T
zGu-Ea;-TRYj}0C8iYJDrJTp9JS}|jILDn#fQ07@E{0ep_nptp&%=)kV^t_*&Nslit
zW^<Bxl(Zqi0Y$Db;=XNaOpa|$>S>?&_|xqT<Qt_$4m;(=8j~23vDlZmM`i=K<+W&P
z4JWluU@971!~INXRaOJ+m1vs;t&+K)78#jJ1^Z-<jKxZo_KqM*{&mJngiEMmo|+O~
z#x0>Up$}|}xv@|YQ(}82occs47A{g-q%Qtmsw!$NWkQ>%B}KW7I@)QFmL)hsS|015
zkFZs#I<TXI94fo&l!~N~>cm?+sk~qsWD^~vWa9~HIV_m4q)HR3riUfR6`Z$DWGcSK
zj+G5BHqqWRs~MNQNz#U<$FZuWC;Flp85HR8DzvKt&7)Ht--yPG)NjSM{?$xf!3rY5
niGLBBgoe!~RgC?IASS!Y_D^z3zV!jR<>c%cI&!OT$S%A;*DPb4

delta 790
zcmZvZTXPFx7{`B`Z1URmk~EqUhjum6!<L3Llps~7sxw6erE#iOr)G?Cn-7s&7p~ly
zX&sUsoiVO`2p`3G-c5utF7n^^%|6fX|9_tSky=eHfB*UAD^TRQOPX=TVV4Nw4&5Aa
zDRI>07{`s2T_!kTWYXazr(BWKE@wDvWXiOiQ%t)gIIp<i3gM!WONuLstBPxDFS?@f
z4BIVo^?AFe{wA83)@)^);<{#r8;YBnTg+;1Q&HT}+~uCeXHIcn^MH9xm4}K)n#VlR
zJY_-ij75t=-HP_rb9OqLG1uf$^>sDBTwPhn&%AoMxFTiy7}fNXRV>x#?6)7&u~MYg
zEkj%M$PW`lG$v=sD7r&#WuoD`q~FBy*NIe`L_cG%$-4+UMa|scVY8cEa?-7OdgYFs
z#ZlC--U&;|v)~290^$u+Enq{*4sc4b54agS6Kk+BK$qhFC+yjb)NBga?7f$^mR)a%
z7!bQbu^y0R56O;wG1<$0M#BhY;>M;O!JPJx3u6_eV^By5sUKpPnk~(}(mpJ6XXWn^
z!NjFhmeo!@C04fJoOKcvuSs&Xlf@LmSm^1=a8lIqbjY_o9myr0$w`48XhVx_XwCIU
zzR~41Nd1fT{@SM7!V02ahG}i{H=;w>@@Gk{VE-XV$gwbfk%Q)$;*fkg^ARms#AW($
FegRLyQse*t

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaFlink.class
index 6bc17a3b98ce0584b917fced8ef49f79b394e0fb..9b69329ca0b5229070d5ba269e8b682f04dc75c9 100644
GIT binary patch
delta 1420
zcmZXTc~I3=6vsdJE!^Mxc~OKHmQw!Z5{*GKPFm?GLNC<BEh`I65<~=i$kw7owwYxX
zUb4lsu*I@+BlkjEHFIgtR;(;-U#QFq>s)XeXL@gb_w3(u?)m<HD>K(;*6ljBr5Wh2
zQhY`*$KyJm>#6g|_n73=8+_(+V}zTy*=e_gCENWLJL^`>JfB47xZ^gD`5w1x?(kUP
zai?aX<}RO97e0x*T|vFiBCJmX_h<)Em(~%yH(4Mb@_Cp>pXEGqyi4$~vmW($%oRVb
zSrH+|6PhP|PIuF;bn+>mK0NKTXM9$%+Gh=Geb&+BQRC#Z&a>Vf8$33;i?(|<dE{(%
z-Yp(moqW#Yc_*7aYBk$Dw)+g_1=sUM%}YMHysTZyDqhjN>g+k19d@u9Y4gJao93z3
zfLdW^hvurCwk<T-HiQQR$1=|D4X0+kX4u8+hTZJZ>^1D;4b7W|w|Lv|4(}S?<9$VR
zMnP>sMoo1|S;m;kctufVbxBc`VLu<(UJ2*)n;M^4Ra0J6nUQ^55jm}-Sm6~{#%n6h
zEGblkV`U{XOBGpmt>42Q2==yn60&-X<wL_qe60Dz@F^{t1BTD|TrtQ_iKN;gx^M0m
z98@F?i^r?0sw)dBMio_0j~7;TN#M&Qwu<;FiQ1qr6?O-P%^cDkcJgb@HxBMw!*_gd
zSL^P<ANbMk)+Yx?k!KI-Uj2XKXTvYF8h)i!^PAy!j%fZc9Ch|i!=JPm{^D;#o70Zb
zYKMAfcm0P}MX<b}!YG{D+tzoD+9h6!R?6Aw$LEiRjS5K3K`+-EtAd8njIom<eY}v8
zNP^NfBa+#)Ffu&sc`D))Q+`uR=h9H8PDUBk#ZW`7oscq6b+rpq8bZm6UN$d!n$3xx
zF(oE14Fu?pTt_s|fr|{I5QgO(FII*~nUQe%M$}qS0$e0#Lc6mE6GS&130%x2Vnw)=
ziQ*Y=cSQHsx!iF?<vdqv&Xe3hBr}9=@)q_ai@prwEV3n<BmbBTl1qUMHj4}8OU+}x
zjI>w=StjU>(s{XbY?eN*Z@%<O;65(na_MK}Gt3t)AovTI#AJeWt79HlFolpbDHq@?
z<#q)OW-5hJI*Wc3F%2!SX%sWP{UX~aVTQn$%9AQ^9r<Pd<(EtTOo>GZ9HCJYPfPNt
z5U`Gg?UTOlU8+ytK&D-qx~P2z|KC?Vl~hTdgX&DEjWkWQ@}ox?A$Y=@v~~mx5Hv?X
z;ySX^lXEt3{&sTKh~q>eMxQ`LB3H>8;A(k7Qd-+bsJ-R{LIV<jl;qeZE@-0fR&pn9
zWOx(Vj$YMHuP^9usucE=_ScFYV75?#EH@y#iZPOiN>oXzGp7gzkR+A&%XS}N2@kTA
GW&Z*!%q7$S

delta 1410
zcmZXTd2mxz6vlryX>wm)FD0}gh}04OaKNfiXK)lzPzn@jg$f7-5e+o0l{P79!KFyW
z4XU`%$LfNDii(0@WtV~*DlXuT3+@YwTX8{Dz;jcEamLK#oO8c>&Ud!^*5<FsZ`g5o
zQwz{rb#S?WdWY#Q*D=Fktiw2KHn?2R%n&zlqqS}dh`0Tf+0)IMTU^>vZ^bN!*$$1G
zTODq5n4`H}bB9aRUU%e98*rD)T$)@w=4s};G~~8jF31+jB`){#fXh;r9nIq3Yfle4
zJY<6()+`TE$RnCZT~4;uK4$d_m+m}nttVVovdZO2R=cd>DTkER%@%puinR{wY@=yp
zy+i*E7TxHu$?DAx&se?1p;pu4u+`-}wrQSqDWG2SoYl{3>$Q>>G%tDsR8jMGwcn?f
zdmA%ms_kCizyxoO>f<dAoY`*}!xbGSCX;owb*WfQ&)RruT0AAxFBx9u6~hi*)x2hS
zoi{W)4ZC>L@D^_y-r-#@E7;lp9`Ad3!9Lw<QpvKZlj5mfB}a{dWTL#XLJ^u&RT)pz
z^{gyY1j@a}U}KkI>^6MBhnkNJAG1gEiQ!W|Q=H?qgreR~C*qCK5&!3W;U#pm_{%Vx
z+6Vb6Os!wm5U>Kn2ENvOWA(S1y_VrS!}sh{bR1k&nV8&lWL+vAtFBB`bS;XNPmURW
z;74zlKF(jvh2B1WQtzMm+3*XkhW)f^el`5Y@0vdh2kd#f;ZOD$4)T}bZ)^QSYg1;#
zJCfBkY&b-#!e1S$F&w7Vo9*Ojj#w=3Xcti_wAI_|4Dk<B%Bu+Fds{-CqSeW=cvY_w
znR7B>lu!AM%20vk`JtkK2`cSUs2s%^J-lw=oaQ50qcSo>M!Bk;Aw{h>A?GaB-dmV6
zPldfxBgLhK@>oD|JkpdMj@YtRktK5KC0bcDZ#`;_7(Ol%8BBv+7$LT4b6_N+<P_p!
zMhjBn?T+kju)ZURi0mUVXNzxNvgt=B`g5YZydIp-=?svY0tPZj5)UE9P^L&RGvw4L
z(F=re38nIxjAj{QXklzR?|8`-WRW1HlF!g2c&XHv%^b#Y34S^?FpKeAN`@q<W&)Q<
zcQMZ8a*;tvavBqvgcjOd%7~{M*-AMTQt%b>j|yFzf8{a%E5(1Z+=cKRV5z1mH|z>|
z!uBliPRVPZ*WA2y<a?{4P3al@e_nG*QX_trDvOLm<Z7lUH*%1n!Y7N8)RwPE*nFaM
zHd8QmJp+qR$;%$Jj=|d)v|8Y{b+~Dl;W!dvS7Pgy5b9(g(-An6sZ5g!uM#*zba%n7
zKDOj;>Bgm{?7|HUX{Lu=wEEAYPmm(65zNQ6QV=p?pG>S!78O#NDoYtUvrzD`L@kmT
MFXnFU;a=|h7ZW2UC;$Ke

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaSpark.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaSpark.class
deleted file mode 100644
index d052941901b78184b025bf440021bed52eb83f4b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7953
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
E1(Jj-YXATM

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$1.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$1.class
deleted file mode 100644
index fd737482c754f89b60314bc7a25b2ca7f050cb6f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1662
zcmb7EU31e$6g?X|R-(!w1PE;jZGg1cjuRQ0Hf@vALK+}NPSS>&Y5TO1HjZLh@<=iR
zKc&B*FTB8m>Cl-@pZlXaJ^EnA`C{O~x_7Vd-gEESv-|IVul@$GgdcUBMSUDKENEEN
zVWOeohR*d(4WH@IP#?omVn5e0iZ2pxS;v?7O2gMWCb6PnRl_$LZV8lDUEhuA6e`u0
zKyfW_l)xFw_0?v-yQ{*7a@S*I$_i}hwPfff>pWPD_uWXq*zkQ7u6Z(w6qh%xz0h=f
zy}&m+a<3yT87tp@YDRIWWY_iE=7S`>^LjaVV}-!6ieiE573)AgmZm3}#tde!9FJ6g
z6%cIdLiU#%m>XN`Pi)nT-N0wDLPtGKT0T}vVDz!{`rKOHiKX3X%3eAO`8$HWwR@oK
zco;j6B-rCSZrhh}KV%_i2<7#rAZ(kmC+&TeF_4cQnVpOSb30UyYm=ANq1~sBdy6CK
zJ3&9R)m=9^jB|$xTukQVp{@J27eu72sp9>>(eSN-?{M3|Ih;3e2WtXXPd=J1Pu(-O
zRTu@nhVKom<1S%R{tmNi;2!P^Ts%tcoxbZiDx{#+!!QVE4Q${C0}o&sXu{I4X<!T6
z0+UB~8n}cRfyT+5WrUq1nnR^B<^^hRPrbn6yFpT<UFrG))0N+jA6s&JN?qCOB_u3Z
zcF;BVWE89LN!K$Es5Me+Ix?2KuJ4#xzmy--dAjrOkWTsW9yzT{$IEZNFzKaSsSdT9
zYm|zTwymOQuF+@+T&h&9A?m!Ky>wt&LA#x{S4#Ty9nN(E+Hmnq!nqa_)wWgKB#3NN
zwdaX(^zfN876;ijs_K*$cx_dpD&F|v2J%s=Ej0M5odvHvAIJiK6g*cK=$W*FcC_{q
z;yIlWO!HexgH2qdZ)6F0A0Ki>E-=GyviWxwE7I0qV5B}(7@+v*56o`<iPB%tetC(p
zsqq2yg#q598Ne8zTzHmN(^2NrTS&2{=>b1MM~l&in843`s~@G<HP)XX-er80HeS!W
zASOP>Y+9?1EA&Qil~pv1G&NkCnY_(5=khj}xiy)(T$}#~6LtOuIP;8w(`GH_C`Ejd
ZW_^n5sjZ+&TV!|h_<){HfJs_l?0-!msz?9;

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$MyTimestampExtractor.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming$MyTimestampExtractor.class
deleted file mode 100644
index 442061a4ff662de5b36a8e55a9f2a3469920e257..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1936
zcmb7FZC4XV6n-YzWXZY$qJ>iGOGQgSU@eMTKxz%p1{ZA&pzZ0GVVS_{W@pdtq{@%#
zhxW9X)1K2G;E(F*olPQ1iKphn-krH~U!J-1+?luk{P{P4+jwqa2(u>UEMzcSz#!%=
zIJjxy3oKZ;h1*&zTDXI|THGt(ODtI=mbJ%<iB%I{nRvjEOB7cL!<1W%9Y2a>=)C0B
zm)zw_gx--;SALK<J0vUGaG4>$;)lLkWylt%cNvV5+!qW(t{;lW_1d0@xA|T`nh{re
zJlN&2ujehLp$>h@c46yi+ph`AU5nOVtC)LA#te2j3`JZDc#;URT7M6wM8$&F{P4he
zq@h;Y(`&t=5@J&{Q!v~qx-vd+c*MO!(cGxx1-=MX;&?Jl>NOENrPko7@MOHdyg9we
zFxXygDj62~55&L}eH6`#c$|p+HL5Ygxch?t%pFDbaMF@#wXO~!&xZ09RlMd0fiBx<
zcS(<;c3GeIjb^2pHQ-dmCwni1r<PA^RtZ9(;va-u)nkJCQ~%}rz&vS@t%|J2p4jj;
zea?5E?Yu6Mjq|v`aQ%a*YU3P6OnhzQAxb9JY^-C$#5Xp+McKwC9+_}$Y~ituYj|Sf
zI~(8Qsf`M@ZR}vz#50Cc?_7ORkYPAI;*Mf7ES@4_GiKsMvGhce$k^%CBR5a^{SSfZ
z2sO9TUQ3&n2zc&<a^;X#LL#OutLu^U4!1Pfh-<~o=?-SL%!m*psjt2lQhYzkkWR}w
z5Nb_Sc|D*=qs5kIml3%RD5=fM`*Z`eZBpJhwPZ1N0<5bSXcMyf4(fwq4`dyxR=7_5
zUC}7fL|6X*u3kKWp+qf`F%O*5VJt(rLw6r_<W|{r%N2&p9a(!=QX+Fts8>RS4EH-x
zzcb!$#c#D=T8`6;`VO-6J*O(o``V!6q1$)9KYHRbdMk!NgrpC;K}cq3OnpW2Bbq%#
zHeDN@c>^}{7cxJ*LG}+AzowR>BnQa?_#6f%Db^ImXl6Hk@G&N6#_%aFQd}LcLDmEG
zU$}9MTm$(A%wr5RP*^e=u$FSa;mo)(o;!wpH$U?`jAx@{a#kDvLS9+ujF(`NoFzGj
zv-BUK$8L<?x=DKF=CGI|SVdlEX(7;~OSqh(TEG?BcZR&K;41kTWIsVIKZ#trgX^@K
hr~R~dp*^R_vq+i@rs<nWM>p^Z{ViG<#C?pT@Gs1Z7zqFX

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStreaming.class
deleted file mode 100644
index 14242125efeb12bc2e5e1dd0eb51d5bcdf5be457..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3250
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

diff --git a/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.class b/target/classes/fr/ippon/kafkaLatency/streaming/KafkaStructuredSpark.class
index 190c61aa05a58407bc59461b627469ee90fe92c2..f8bb5b8853e1cf81e60d8805713fe09a3f2a4fbe 100644
GIT binary patch
delta 2355
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
Ag8%>k

delta 2579
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
H^QRvJ9u+2X

diff --git a/target/classes/fr/ippon/kafkaLatency/utils/Config.class b/target/classes/fr/ippon/kafkaLatency/utils/Config.class
index 7ff3e9bee42d46c890d56db9610ed75f5af7cc30..9c3079bca01c40a5e6318cca263fd81431806462 100644
GIT binary patch
delta 67
zcmew*_)Bm@1v?|x<VtoYM!Cs**gYAQC$n)(QWanjV-RAHW)NmjVGv=^We{aB1M;na
VqAm<l4DJjP3?2;9llOAi0s!_j3=IGP

delta 67
zcmew*_)Bm@1v?}6<VtoYM)}Em*gY9lCbMx&QWaznV-RMLW)NXeVGw1|1@g>*d@BZV
T1{a{HJA)*H2ZPMyy&Sdx_qhxj

diff --git a/target/classes/fr/ippon/kafkaLatency/utils/UtilStats.class b/target/classes/fr/ippon/kafkaLatency/utils/UtilStats.class
index 8c0ccf74357c4e3d12b30fd5431088d035f1e4a5..6be66ccbd5daeef0e5b19e9eead1c455acb966e1 100644
GIT binary patch
literal 3578
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
BsagO4

delta 1699
zcmZuxZBSHI7=G@(yZ7#1E`m#93#%cBE(ETEWa3ADU}mylVH#=16_*v*Slhi&^tD-9
z_8lGj(!ffKtgL`qL7SYBemTzAOjG{skAM78f1A;%={bw$HZ`;JzVA8bectDs_j&JL
zDc)P0I``M9?*S~vcP8c|>_q@g(lndcgnM#uFIuG8Ecfn{(H0-mx98wN?8w1GXp;xF
zft@CD5%!>6`d!jQr0Fmb#cqk~l!;wFDA?{nOjdu`K+g&jeuPcLvB$t8GCAQv(u9Lv
z6McA8n#VloH}JRzPnamflQQWk15X=B4gAn0nw15r78C<YjrdJjB$lY_3l-$HICgt?
z*xs|*-WiKzlAjU#)DAJJ1U1$YzpEwDS}e9ujY<m@s5G$G!n1hJz&;E6@w|l>aKOR>
zge<&>mlWi$iN~F!ld$)MBhK#lu4JB$m-F!o-K+UnYvDD#Zr}|I19;Pbuy7D>Sy+S`
z(XRz;4=>~-OX^E3yp4CHdDp^wIAq|kh4(RNVMyL)AwsNoWa<ITcjAs6lb{dqp@M=g
zyUz~wI-Rl5>O{isZ|qDu20pTI6vxCaS7q(T_(Xx3lvE3nPJ}HTw(u#A8~98<?sE%Y
z;DCahsf<i<u}Pa-pg>=jNW>E)I)OtLzQmvya8-#PU4{N>8Pb^D6Ad-Sd!h=AK0DSM
zY3>k>dXq;BR%{?TDURvo+E@5moY#xA07k@R{i-<ZUMemb3%wpE-r^)Wd!pi3w_j*_
zQKhT1rz5UlMzHZl_2!*jk#=WU#TEtb_E^MDm>if<G0!t7F1Zq-&0SY+Mk7u*l1$ps
z2$Lf6$_B<Pe1mZdcS;e~V6FJsQ>UB~Io`{z(+bLk?VTy|%$ihy^Q|BVH#|~s#<y~k
zRa9}!DacxzQg)u1QV;qfDI>j`IUE|=I<7+WirlR{31x(VirZ-Q%w`^zFt(-=a66VF
z1$a@9W!xfKIl@GPDHlhfwuaA+LThc3cJ?@26L728%Ebh91^Y)~n301+See=JC^*GR
zn1HF$<S3|jjlw#O+}4wr=F3YX-|tFedK$ho3NnzJ6jV>9hGEvbt0(>LGo;L>QLod?
z$j~h3@dPq7h1oPsSu8WjQk_LY07<GQC5K)$>DSMUz{Th9MmOKs&Ck1=@8^@x;{yE!
z{FL!prejSg;9eO|=MqxRKZN;|CdjT;U<HL~phP<;Q3qR|pd=~EF+f3vD8^CBahz4o
zvft;}-e1^Y+4&M^#Fb(>E4Y|32Pqk9Ji3UL8CCCK9Dx2OIt;Ahuff3TE6}fE>$ND~
zl;bp|7ZK`|n3ZYVe1gzywQK*Sb_3P{1aly>z^SQO`5$z}f6*Mt_5TdoSzcR$?bGm6
z<DzjCk3q{`sJ_5BW{tt}QP*3>QIf`-{bMkEr8kzTG0Yf7$;K=d=Tb#Jr<^V`E%Qdm
zQ;Jo*cNsb5G|!WxhJ5~$Pv>V)$W!?-6f<WwvjXh#EVQxP*QdRKdv{?2F|xg0sDEIs
pfx83H7GooKR5aowy-B8TIlgJCy_M@ip4?B)Ry=@h*P?E0`x{=xLplHe

diff --git a/target/classes/log4j.xml b/target/classes/log4j.xml
index 1d493b1..ba331cb 100644
--- a/target/classes/log4j.xml
+++ b/target/classes/log4j.xml
@@ -8,22 +8,22 @@
 	<appender name="console" class="org.apache.log4j.ConsoleAppender">
 		<param name="Target" value="System.out"/>
 		<layout class="org.apache.log4j.PatternLayout">
-			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t [%-5p] %c{2} - %m%n"/>
+			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %t [%-5p] - %m%n"/>
 		</layout>
 	</appender>
 
 	<appender name="file" class="org.apache.log4j.RollingFileAppender">
 		<param name="append" value="true"/>
 		<param name="file" value="./kafka-bench.log"/>
-		<param name="maxBackupIndex" value="10"/>
-		<param name="maxFileSize" value="10MB"/>
+		<param name="maxBackupIndex" value="6"/>
+		<param name="maxFileSize" value="2MB"/>
 		<layout class="org.apache.log4j.PatternLayout">
-			<param name="ConversionPattern" value="[%-5p] - %d{dd/MM/yyyy-HH:mm:ss} - %c{2} - %m%n"/>
+			<param name="ConversionPattern" value="[%-5p] - %d{dd/MM/yyyy-HH:mm:ss} - %m%n"/>
 		</layout>
 	</appender>
 	<appender name="async_file" class="org.apache.log4j.AsyncAppender">
-		<param name="BufferSize" value="128"/>
-		<param name="Blocking" value="false"/>
+		<param name="BufferSize" value="60"/>
+		<param name="Blocking" value="true"/>
 		<appender-ref ref="file"/>
 	</appender>
 
@@ -38,12 +38,22 @@
 		<appender-ref ref="console"/>
 		<appender-ref ref="async_file"/>
 	</logger>
+    <logger name="org.apache.spark" additivity="false">
+        <level value="warn"/>
+        <appender-ref ref="console"/>
+        <appender-ref ref="async_file"/>
+    </logger>
 	<logger name="org.apache.spark.sql.kafka010" additivity="false">
 		<level value="error"/>
 		<appender-ref ref="console"/>
 		<appender-ref ref="async_file"/>
-
 	</logger>
+    <logger name="fr.ippon.kafkaLatency" additivity="false">
+        <level value="info"/>
+        <appender-ref ref="console"/>
+        <appender-ref ref="async_file"/>
+    </logger>
+
 	<logger name="org.apache.commons.beanutils" additivity="false">
 		<level value="error"/>
 		<appender-ref ref="console"/>
diff --git a/target/test-classes/LatencyTest.class b/target/test-classes/LatencyTest.class
deleted file mode 100644
index 0d04f7fa1ec9af1fc5e9c4c977065b33607b54de..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3074
zcmbVOSyvQC6#jZxTH0pGuqdLK=$HT|4hk9tLxL!7gGL82iP?&o8fd1cd(sO^HuI8m
z@=x;Yiy=Pb2jt{8<>agGW)>Vg1UOw?b?Yu)-MZiH`TO5je*u`rF9wD&WpH*eO~K4z
z%;Ktnk1(g>V*{P|#K1hRrJ-S_g9`jRNzrxOFtCWZG*XyJqph~t|63aEm@#k%a|Z6J
zA*Y5VHFV;hj{7=3)zEp>a;#uZL)+N+iiY+Dw<tCA<}63v3oEPATNbM}CFz`75cZ1j
zEVWLA?ZLX`Yv|79L?E5Q*0S`2Sq)u&Rd{8!(4f(FFt;H#Mb;M1TK2}Xf~*FX>rk&d
zABaMENmL_uJg0`?hoKW#6}e*h7URr2jvEN2&M<vB*IUbOgv6UoBK1d+7F^mmp&R;f
z%vhQays!|2o-D@Fu99sz397!bD3t{@q^KlD!?vib7DZ<FPG*{iPxfjaGE*9kC&CCq
zbFj>XUE9qFGw16rYpKdiYB2I{=oRFmr83^vkkoT3fhLY&M8^XY50U5oHP;RNz!TLa
z8LYcSzqb?1eHh{Ek%<*N*72E%&+&zhCnmncR~q_T+=Gd)@r{meO$e;gwxFYELZYN&
zjmvdD7M~3rWgWJTiVnwwixCZn8xRst-TD314O!sjk4B;}u<UHXbqb;9Nhe?l$U+#n
z9<TI>BcJ9iXN?uL&buh?Y-t!98;`4IFYCPYHm!o3HBiNO29CmG4SS)ZVQ9xRDmWID
zqe_<bmU$zb#33o+hpQEf@TbNa3b*EG4_u3(sx?NLD0x|{T6LXlR7y#Xvb-r48_$}(
z8`Yko2>DhKRs{J;Lnsy#^=1_xjWro8N#7T1tcZc8gC$x_e4Q5azArr@Z!ZbUCh-~%
zQ1hyirRY?@uQ>S{I(%EoD$U34sNg4CpJd*)D$yB~qd*Oz8a6eYYi+Rm=sTI%Z>|;<
zaWzcu*Ly<ye4OI_nbjGZnDth92|?7MmOW9BI-Z(%h96B#V#GvN4d>MGfg0Xdd^lCl
zsO4<BWtq)IJ%#)fB~f6>Z;>>W`bx*oEVrENmP2OUyzMyBTd)N$k@xdY<K-p(Vy52`
zPSKWrCN`XXy>c2PO@_-`RoSS%|IIk$n{5+fM663ZF9_StTY;R_@m#~1*YeZqJUeZp
z(NB{e-eI*3N1wpM{2a0=ay-s;mT!&kj)^~@z2GE;6C67uVHZX@H)92y#M@kHbTvXP
zW&8u*DZWRyk$S}sDgH!z3XipIbo|avclIUpZ5(<L*{3l`uWga{W1Im!{2xY|l0kYL
zqQ?`Ary>r~>kxFD!s*C%G>M(zo{rQb9cOgB%Y}mZ9^dSJHBi4MpfVAtt{qSVFt%Y5
zTK8+vj?#7q+9(5nVS8`}1N40q6WkpmxN%C)*5Dm)fR|~8_oM~9@jc-690=Yd;Y|_V
zMZ&vG&zA`AL&CdqP<ZN$@s&1bueT1bZ~xhwBfNRSTOhnedcID0Hwf?MLE)X<10H|%
z#T7Sz{{b&Yc=rkK0pTsv^FzYR6W*f(!Rs?rBVz?BLY#=om26_2^(!`MQN71(%2Ab#
zuZ8NsZq+%evQf5B9o(%tNmVx17OF$LRZmlujW|&)@x~SN`x}#Y=<dWz9Ellgpu0wk
zn6Ynh-4BD@>}LLY$lElIL|IckqK7}86=Q*fr%NP4J1Kvjq7*K$U4X_Kw(t|aC-pCJ
bJ&g{QZX3(^3ZHnkP@CPX&2H6Zw{iJDq3Dp$

-- 
GitLab