<?xml version="1.0" encoding="UTF-8"?>
  <!--
   ***************************************************************
   * 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.
   ***************************************************************
   -->
<analysisEngineDeploymentDescription xmlns="http://uima.apache.org/resourceSpecifier">
  <name>Deploy_AggregateWithContinueOnRetryFailures</name>
  <description/>
  <version>1.0</version>
  <vendor/>
  <deployment protocol="jms" provider="activemq">
    <casPool numberOfCASes="1"/>
    <service>
      <inputQueue endpoint="TopLevelTaeQueue" brokerURL="tcp://localhost:8118" prefetch="1"/>
      <topDescriptor>
        <import location="../descriptors/analysis_engine/SimpleTestAggregateWithRetries.xml"/>
      </topDescriptor>
      <analysisEngine async="true">
        <scaleout numberOfInstances="1"/>
        <delegates>
          <analysisEngine key="WriterAnnotatorC" async="false">
            <scaleout numberOfInstances="1"/>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </analysisEngine>
          <remoteAnalysisEngine key="WriterAnnotatorA">
            <inputQueue brokerURL="tcp://localhost:8118" endpoint="WriterAnnotatorA"/>
            <serializer method="xmi"/>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="true" thresholdCount="1" thresholdWindow="0" thresholdAction="disable"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </remoteAnalysisEngine>
          <analysisEngine key="TestMultiplier" async="false">
            <scaleout numberOfInstances="1"/>
            <casMultiplier poolSize="1"/>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="0" timeout="0" continueOnRetryFailure="false" thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </analysisEngine>
          <remoteAnalysisEngine key="WriterAnnotatorB">
            <inputQueue brokerURL="tcp://localhost:8118" endpoint="WriterAnnotatorB"/>
            <serializer method="xmi"/>
            <asyncAggregateErrorConfiguration>
              <getMetadataErrors maxRetries="0" timeout="0" errorAction="terminate"/>
              <processCasErrors maxRetries="2" timeout="0" continueOnRetryFailure="false" thresholdCount="1" thresholdWindow="0" thresholdAction="disable"/>
              <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
            </asyncAggregateErrorConfiguration>
          </remoteAnalysisEngine>
        </delegates>
        <asyncPrimitiveErrorConfiguration>
          <processCasErrors thresholdCount="0" thresholdWindow="0" thresholdAction="terminate"/>
          <collectionProcessCompleteErrors timeout="0" additionalErrorAction="terminate"/>
        </asyncPrimitiveErrorConfiguration>
      </analysisEngine>
    </service>
  </deployment>
</analysisEngineDeploymentDescription>
