<?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.

-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
       http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd
    ">

    <context:annotation-config/>

    <bean id="vhfBatchListenerJMSConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616?jms.prefetchPolicy.all=1"/>
    </bean>

    <bean id="vhfBatchListenerPooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
        <!-- match maxConnections to the number of routes that share the connection factory -->
        <property name="maxConnections" value="10"/>
        <!-- match maximumActive (which is active sessions) >=  concurrentConsumers in the MLC -->
        <property name="maximumActiveSessionPerConnection" value="1"/>
        <property name="connectionFactory" ref="vhfBatchListenerJMSConnectionFactory"/>
    </bean>

    <!-- JMS Transaction manager -->
    <bean id="vhfBatchListenerJMSTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
        <property name="connectionFactory" ref="vhfBatchListenerPooledConnectionFactory"/>
    </bean>

    <!-- JMS Configuration -->
    <bean id="vhfBatchListenerJMSConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="vhfBatchListenerPooledConnectionFactory"/>
        <property name="transactionManager" ref="vhfBatchListenerJMSTransactionManager"/>
        <property name="transacted" value="true"/>
        <property name="concurrentConsumers" value="1"/>
        <property name="cacheLevelName" value="CACHE_CONSUMER"/>
    </bean>

    <!-- JMS Transaction policy -->
    <bean id="vhfBatchListenerTransaction" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
        <property name="transactionManager" ref="vhfBatchListenerJMSTransactionManager"/>
    </bean>

    <!-- ActiveMQ component -->
    <bean id="activemq" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>

    <bean id="activemq2" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq3" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq4" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq5" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq6" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq7" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq8" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq9" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>
    <bean id="activemq10" class="org.apache.camel.component.activemq.ActiveMQComponent">
        <property name="configuration" ref="vhfBatchListenerJMSConfig"/>
    </bean>

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="activemq:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>

        <!-- better through put with a additional route/connection once shared pool config matches concurrentConsumers -->
        <route>
            <from uri="activemq2:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq3:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq4:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq5:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq6:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq7:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq8:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq9:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>
        <route>
            <from uri="activemq10:queue:scp_transacted"/>
            <process ref="connectionLog"/>
        </route>

    </camelContext>

    <bean id="connectionLog" class="org.apache.camel.component.activemq.TransactedConsumeTest.ConnectionLog"/>
</beans>
