<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
   http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<flowController>
  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
  <rootGroup>
    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
    <name>NiFi Flow</name>
    <position x="0.0" y="0.0"/>
    <comment/>
    <processor>
      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
      <name>RealTimeDataCollector</name>
      <position x="3259.732177734375" y="1739.991943359375"/>
      <styles/>
      <comment/>
      <class>org.apache.nifi.processors.standard.RealTimeDataCollector</class>
      <maxConcurrentTasks>2</maxConcurrentTasks>
      <schedulingPeriod>10 ms</schedulingPeriod>
      <penalizationPeriod>30 sec</penalizationPeriod>
      <yieldPeriod>1 sec</yieldPeriod>
      <bulletinLevel>WARN</bulletinLevel>
      <lossTolerant>false</lossTolerant>
      <scheduledState>RUNNING</scheduledState>
      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
      <runDurationNanos>0</runDurationNanos>
      <property>
        <name>File Name</name>
        <value>data.osp</value>
      </property>
      <property>
        <name>Real Time Server Name</name>
        <value>localhost</value>
      </property>
      <property>
        <name>Real Time Server Port</name>
        <value>10000</value>
      </property>
      <property>
        <name>Batch Server Name</name>
        <value>localhost</value>
      </property>
      <property>
        <name>Batch Server Port</name>
        <value>10001</value>
      </property>
      <property>
        <name>Iteration</name>
        <value>true</value>
      </property>
      <property>
        <name>Real Time Message ID</name>
        <value>41</value>
      </property>
      <property>
        <name>Batch Message ID</name>
        <value>172,48</value>
      </property>
      <property>
        <name>Real Time Interval</name>
        <value>200 ms</value>
      </property>
      <property>
        <name>Batch Time Interval</name>
        <value>1 sec</value>
      </property>
      <property>
        <name>Batch Max Buffer Size</name>
        <value>262144</value>
      </property>
      <autoTerminatedRelationship>success</autoTerminatedRelationship>
    </processor>
  </rootGroup>
  <controllerServices>
    <controllerService>
      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
      <name>DistributedMapCacheClientService</name>
      <comment/>
      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
      <enabled>true</enabled>
      <property>
        <name>Server Hostname</name>
        <value>localhost</value>
      </property>
      <property>
        <name>Server Port</name>
        <value>4557</value>
      </property>
      <property>
        <name>SSL Context Service</name>
      </property>
      <property>
        <name>Communications Timeout</name>
        <value>30 secs</value>
      </property>
    </controllerService>
    <controllerService>
      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
      <name>StandardSSLContextService</name>
      <comment/>
      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
      <enabled>true</enabled>
      <property>
        <name>Keystore Filename</name>
      </property>
      <property>
        <name>Keystore Password</name>
      </property>
      <property>
        <name>Keystore Type</name>
      </property>
      <property>
        <name>Truststore Filename</name>
        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
      </property>
      <property>
        <name>Truststore Password</name>
        <value>enc{9E2EE146023A0F31914706460EB177B357796CF0C768DECE09D10C4B40F344C8}</value>
      </property>
      <property>
        <name>Truststore Type</name>
        <value>JKS</value>
      </property>
      <property>
        <name>SSL Protocol</name>
        <value>TLS</value>
      </property>
    </controllerService>
  </controllerServices>
  <reportingTasks/>
</flowController>
