<?xml version="1.0" encoding="UTF-8"?>

<router name="router1" kernelpath="../../kernel" release="07.05.01" startorder="sys$log sys$threadpool sys$timer sys$net sys$hacontroller">
  <ha-router>
    <state-transition last="UNKNOWN" current="STANDALONE" operation="start" order="sys$authentication sys$store sys$queuemanager sys$topicmanager sys$mgmt sys$xa sys$routing sys$jndi sys$jms sys$deploy sys$jac sys$scheduler sys$monitor"/>
    <state-transition last="UNKNOWN" current="ACTIVE_SYNC_PREPARE" operation="start" order="sys$authentication sys$store sys$queuemanager sys$topicmanager sys$mgmt sys$xa sys$routing sys$jndi sys$jms sys$deploy sys$jac sys$scheduler sys$monitor"/>
    <state-transition last="UNKNOWN" current="STANDBY_SYNC_PREPARE" operation="standby" order="sys$authentication sys$store sys$queuemanager sys$topicmanager sys$mgmt sys$xa sys$routing sys$jndi sys$jms sys$deploy sys$jac sys$scheduler sys$monitor"/>
    <state-transition last="STANDBY%" current="STANDALONE" operation="resume" order="sys$authentication sys$store sys$queuemanager sys$topicmanager sys$mgmt sys$xa sys$routing sys$jndi sys$jms sys$deploy sys$jac sys$scheduler sys$monitor"/>
  </ha-router>

  <!--  Authentication Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$authentication">
    <groups>
      <group name="admin">
        <queue-grants>
          <queue-grant name="swiftmqmgmt" browse-grant="false" receive-grant="false"/>
          <queue-grant name="swiftmqmgmt@router2" browse-grant="false" receive-grant="false"/>
        </queue-grants>
        <topic-grants/>
      </group>
      <group name="public">
        <queue-grants>
          <queue-grant name="testqueue"/>
        </queue-grants>
        <topic-grants>
          <topic-grant name="swiftmq.jndi" durable-grant="false" subscribe-grant="false"/>
          <topic-grant name="testtopic"/>
        </topic-grants>
      </group>
    </groups>
    <resource-limit-groups>
      <resource-limit-group name="public"/>
    </resource-limit-groups>
    <users>
      <user name="admin" group="admin" password="secret">
        <host-access-list/>
      </user>
    </users>
  </swiftlet>

  <!--  Deploy Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$deploy">
    <deploy-spaces>
      <deploy-space name="extension-swiftlets" path="../../deploy/instance1"/>
      <deploy-space name="jms-app" path="../../jmsapp/instance1"/>
    </deploy-spaces>
  </swiftlet>

  <!--  High Availability Controller Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$hacontroller">
    <configuration-controller>
      <property-substitutions>
        <property-substitution name="sys$jms/listeners/%/bindaddress" substitute-with="bindaddress2"/>
        <property-substitution name="sys$jms/listeners/%/bindaddress2" substitute-with="bindaddress"/>
        <property-substitution name="sys$jms/listeners/%/connectaddress" substitute-with="connectaddress2"/>
        <property-substitution name="sys$jms/listeners/%/connectaddress2" substitute-with="connectaddress"/>
        <property-substitution name="sys$jms/listeners/%/hostname" substitute-with="hostname2"/>
        <property-substitution name="sys$jms/listeners/%/hostname2" substitute-with="hostname"/>
        <property-substitution name="sys$jms/listeners/%/port" substitute-with="port2"/>
        <property-substitution name="sys$jms/listeners/%/port2" substitute-with="port"/>
        <property-substitution name="sys$routing/listeners/%/bindaddress" substitute-with="bindaddress2"/>
        <property-substitution name="sys$routing/listeners/%/bindaddress2" substitute-with="bindaddress"/>
        <property-substitution name="sys$routing/listeners/%/port" substitute-with="port2"/>
        <property-substitution name="sys$routing/listeners/%/port2" substitute-with="port"/>
      </property-substitutions>
      <replication-excludes>
        <replication-exclude name="%/.metadata%"/>
        <replication-exclude name="%/usage%"/>
        <replication-exclude name=".env/hostname"/>
        <replication-exclude name=".env/jre"/>
        <replication-exclude name=".env/os"/>
        <replication-exclude name=".env/release"/>
        <replication-exclude name=".env/router-memory-list%"/>
        <replication-exclude name=".env/startuptime"/>
        <replication-exclude name="sys$deploy%"/>
        <replication-exclude name="sys$hacontroller/configuration-controller%"/>
        <replication-exclude name="sys$hacontroller/connectors%"/>
        <replication-exclude name="sys$hacontroller/listeners%"/>
        <replication-exclude name="sys$hacontroller/preferred-active"/>
        <replication-exclude name="sys$hacontroller/replication-channel%"/>
        <replication-exclude name="sys$hacontroller/replication-tunnels%"/>
        <replication-exclude name="sys$hacontroller/spool%"/>
        <replication-exclude name="sys$log%"/>
        <replication-exclude name="sys$store%"/>
        <replication-exclude name="sys$trace%"/>
      </replication-excludes>
    </configuration-controller>
    <replication-channel>
      <connectors/>
      <listeners>
        <listener name="1" port="2001"/>
      </listeners>
    </replication-channel>
    <replication-tunnels>
      <replication-tunnel name="configuration" tunnel-address="1" versions="600"/>
      <replication-tunnel name="store" tunnel-address="2" versions="600"/>
      <replication-tunnel name="queue" tunnel-address="3" versions="600"/>
    </replication-tunnels>
    <spool directory="../../haspool/instance1"/>
    <threadpool-freezes>
      <threadpool-freeze name="01" poolname="mgmt"/>
      <threadpool-freeze name="02" poolname="jndi"/>
      <threadpool-freeze name="03" poolname="topic"/>
      <threadpool-freeze name="04" poolname="default"/>
      <threadpool-freeze name="05" poolname="queue.timeout"/>
      <threadpool-freeze name="06" poolname="queue.cluster"/>
      <threadpool-freeze name="07" poolname="queue.redispatcher"/>
      <threadpool-freeze name="08" poolname="jms.session"/>
      <threadpool-freeze name="09" poolname="timer.tasks"/>
      <threadpool-freeze name="10" poolname="routing.service"/>
      <threadpool-freeze name="11" poolname="routing.scheduler"/>
      <threadpool-freeze name="12" poolname="routing.exchanger"/>
      <threadpool-freeze name="13" poolname="store.log"/>
    </threadpool-freezes>
  </swiftlet>

  <!--  JMS Application Container Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$jac">
    <static-containers/>
  </swiftlet>

  <!--  JMS Swiftlet (XA/ASF), Release: 7.5.1  -->

  <swiftlet name="sys$jms">
    <intravm-connection-factories>
      <intravm-connection-factory name="IVMConnectionFactory"/>
      <intravm-connection-factory name="IVMQueueConnectionFactory"/>
      <intravm-connection-factory name="IVMTopicConnectionFactory"/>
    </intravm-connection-factories>
    <listeners>
      <listener name="plainsocket" hostname="localhost" port="4001" hostname2="localhost" port2="4002">
        <connection-factories>
          <connection-factory name="ConnectionFactory"/>
          <connection-factory name="QueueConnectionFactory"/>
          <connection-factory name="TopicConnectionFactory"/>
          <connection-factory name="plainsocket@router1"/>
          <connection-factory name="plainsocket_appserver@router1" thread-context-classloader-for-getobject="true"/>
          <connection-factory name="plainsocket_recover@router1" smqp-consumer-cache-size="10"/>
        </connection-factories>
        <host-access-list/>
      </listener>
    </listeners>
  </swiftlet>

  <!--  JNDI Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$jndi">
    <aliases>
      <alias name="routerdlq" map-to="routerdlq@router1"/>
      <alias name="swiftmqmgmt" map-to="swiftmqmgmt@router1"/>
      <alias name="swiftmqscheduler" map-to="swiftmqscheduler@router1"/>
      <alias name="testqueue" map-to="testqueue@router1"/>
      <alias name="unroutable" map-to="unroutable@router1"/>
    </aliases>
    <jndi-replications/>
    <remote-queues>
      <remote-queue name="testqueue@router2"/>
    </remote-queues>
  </swiftlet>

  <!--  Log Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$log" logfile-error="../../log/instance1/error.log" logfile-info="../../log/instance1/info.log" logfile-warning="../../log/instance1/warning.log"/>

  <!--  Management Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$mgmt"/>

  <!--  Monitor Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$monitor"/>

  <!--  Network Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$net">
    <multicast/>
  </swiftlet>

  <!--  Queue Manager Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$queuemanager">
    <clustered-queues/>
    <queue-controllers>
      <queue-controller name="01" persistence-mode="non_persistent" predicate="tmp$%"/>
      <queue-controller name="02" predicate="sys$%"/>
      <queue-controller name="03" predicate="swiftmq%"/>
      <queue-controller name="04" predicate="rt$%"/>
      <queue-controller name="05" predicate="unroutable"/>
      <queue-controller name="06" predicate="%$%"/>
      <queue-controller name="07" predicate="routerdlq"/>
      <queue-controller name="08" predicate="%"/>
    </queue-controllers>
    <queues>
      <queue name="testqueue"/>
    </queues>
  </swiftlet>

  <!--  Routing Swiftlet (Unlimited Connections), Release: 7.5.1  -->

  <swiftlet name="sys$routing">
    <connectors/>
    <filters/>
    <listeners>
      <listener name="plainsocket" port="4100" port2="4200">
        <host-access-list/>
      </listener>
    </listeners>
    <static-routes>
      <static-route name="router2"/>
    </static-routes>
  </swiftlet>

  <!--  Scheduler Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$scheduler">
    <calendars/>
    <schedules/>
  </swiftlet>

  <!--  Store Swiftlet (HA), Release: 7.5.1  -->

  <swiftlet name="sys$store">
    <backup path="../../store/instance1/backup"/>
    <cache/>
    <database path="../../store/instance1/db"/>
    <durable-subscriber path="../../store/instance1/durables"/>
    <swap path="../../store/instance1/swap"/>
    <transaction-log checkpoint-size="10485760" path="../../store/instance1/log"/>
  </swiftlet>

  <!--  Threadpool Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$threadpool">
    <pools>
      <pool name="hacontroller.inbounddispatcher" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$hacontroller.inbounddispatcher"/>
        </threads>
      </pool>
      <pool name="hacontroller.outbounddispatcher" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$hacontroller.outbounddispatcher"/>
        </threads>
      </pool>
      <pool name="hacontroller.stagecontroller" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$hacontroller.stagecontroller"/>
        </threads>
      </pool>
      <pool name="hacontroller.timer" kernel-pool="true" max-threads="2" min-threads="1">
        <threads>
          <thread name="sys$hacontroller.heartbeat"/>
          <thread name="sys$hacontroller.stateregistry"/>
        </threads>
      </pool>
      <pool name="jac.runner" kernel-pool="true">
        <threads>
          <thread name="sys$jac.runner"/>
        </threads>
      </pool>
      <pool name="jms.connection" kernel-pool="true" max-threads="10" min-threads="4" queue-length-threshold="2">
        <threads>
          <thread name="sys$jms.connection.service"/>
        </threads>
      </pool>
      <pool name="jms.ivm.client.connection" kernel-pool="true" max-threads="10">
        <threads>
          <thread name="sys$jms.client.connection.%"/>
        </threads>
      </pool>
      <pool name="jms.ivm.client.session" kernel-pool="true" max-threads="10">
        <threads>
          <thread name="sys$jms.client.session.%"/>
        </threads>
      </pool>
      <pool name="jms.session" kernel-pool="true" max-threads="10" min-threads="4" queue-length-threshold="2">
        <threads>
          <thread name="sys$jms.session.service"/>
        </threads>
      </pool>
      <pool name="jndi" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$jndi.listener"/>
        </threads>
      </pool>
      <pool name="mgmt" kernel-pool="true" max-threads="2">
        <threads>
          <thread name="sys$mgmt.%"/>
        </threads>
      </pool>
      <pool name="net.connection" kernel-pool="true">
        <threads>
          <thread name="sys$net.connection.handler"/>
        </threads>
      </pool>
      <pool name="net.connection.mgr" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$net.connection.mgr"/>
        </threads>
      </pool>
      <pool name="queue.cluster" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$queuemanager.cluster.subscriber"/>
        </threads>
      </pool>
      <pool name="queue.redispatcher" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$queuemanager.cluster.redispatcher"/>
        </threads>
      </pool>
      <pool name="queue.timeout" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$queuemanager.timeoutprocessor"/>
        </threads>
      </pool>
      <pool name="routing.connection.mgr" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$routing.connection.mgr"/>
        </threads>
      </pool>
      <pool name="routing.exchanger" kernel-pool="true" max-threads="1">
        <threads>
          <thread name="sys$routing.route.exchanger"/>
        </threads>
      </pool>
      <pool name="routing.scheduler" kernel-pool="true" max-threads="3" min-threads="3">
        <threads>
          <thread name="sys$routing.scheduler"/>
        </threads>
      </pool>
      <pool name="routing.service" kernel-pool="true" max-threads="3" min-threads="3">
        <threads>
          <thread name="sys$routing.connection.service"/>
        </threads>
      </pool>
      <pool name="routing.throttle" kernel-pool="true" max-threads="3" min-threads="3">
        <threads>
          <thread name="sys$routing.connection.throttlequeue"/>
        </threads>
      </pool>
      <pool name="scheduler.job" kernel-pool="true">
        <threads>
          <thread name="sys$scheduler.runner"/>
        </threads>
      </pool>
      <pool name="scheduler.system" kernel-pool="true" max-threads="2">
        <threads>
          <thread name="sys$scheduler.requestprocessor"/>
          <thread name="sys$scheduler.scheduler"/>
        </threads>
      </pool>
      <pool name="store.log" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$store.logmanager"/>
        </threads>
      </pool>
      <pool name="timer.dispatcher" kernel-pool="true" max-threads="1" min-threads="1">
        <threads>
          <thread name="sys$timer.dispatcher"/>
        </threads>
      </pool>
      <pool name="timer.tasks" kernel-pool="true" max-threads="3" min-threads="3">
        <threads>
          <thread name="sys$timer.task"/>
        </threads>
      </pool>
      <pool name="topic" kernel-pool="true" max-threads="2">
        <threads>
          <thread name="sys$topicmanager.topic.%"/>
        </threads>
      </pool>
    </pools>
  </swiftlet>

  <!--  Timer Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$timer"/>

  <!--  Topic Manager Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$topicmanager">
    <slow-subscriber-conditions/>
    <static-remote-router-subscriptions/>
    <topics>
      <topic name="testtopic"/>
    </topics>
  </swiftlet>

  <!--  Trace Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$trace">
    <spaces>
      <space name="kernel">
        <predicates>
          <predicate name="0" filename="../../trace/instance1/manager.trace" value="%Manager"/>
          <predicate name="1" filename="../../trace/instance1/net.trace" value="sys$net"/>
          <predicate name="10" filename="../../trace/instance1/auth.trace" value="sys$auth%"/>
          <predicate name="11" filename="../../trace/instance1/mgmt.trace" value="sys$mgmt%"/>
          <predicate name="12" filename="../../trace/instance1/store.trace" value="sys$store"/>
          <predicate name="13" filename="../../trace/instance1/xa.trace" value="sys$xa"/>
          <predicate name="14" filename="../../trace/instance1/jac.trace" value="sys$jac"/>
          <predicate name="15" filename="../../trace/instance1/timer.trace" value="sys$timer"/>
          <predicate name="16" filename="../../trace/instance1/scheduler.trace" value="sys$scheduler"/>
          <predicate name="17" filename="../../trace/instance1/ha.trace" value="sys$hacontroller"/>
          <predicate name="18" filename="../../trace/instance1/monitor.trace" value="sys$monitor"/>
          <predicate name="2" filename="../../trace/instance1/jms.trace" value="sys$jms"/>
          <predicate name="3" filename="../../trace/instance1/deploy.trace" value="sys$deploy"/>
          <predicate name="4" filename="../../trace/instance1/thread.trace" value="sys$thread%"/>
          <predicate name="5" filename="../../trace/instance1/routing.trace" value="sys$rout%"/>
          <predicate name="6" filename="../../trace/instance1/queuemanager.trace" value="sys$queue%"/>
          <predicate name="7" filename="../../trace/instance1/topic.trace" value="sys$topic%"/>
          <predicate name="9" filename="../../trace/instance1/jndi.trace" value="sys$jndi"/>
        </predicates>
      </space>
      <space name="protocol">
        <predicates>
          <predicate name="1" filename="../../trace/instance1/protocol.trace" value="%"/>
        </predicates>
      </space>
      <space name="queue">
        <predicates>
          <predicate name="1" filename="../../trace/instance1/queue.trace" value="%"/>
        </predicates>
      </space>
      <space name="swiftlet">
        <predicates>
          <predicate name="1" filename="../../trace/instance1/swiftlet.trace" value="%"/>
        </predicates>
      </space>
    </spaces>
  </swiftlet>

  <!--  XA Resource Manager Swiftlet, Release: 7.5.1  -->

  <swiftlet name="sys$xa"/>
</router>
