<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 -
 - 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.
 -
 -->
<broker>
    <prefix>${QPID_HOME}</prefix>
    <work>${QPID_WORK}</work>
    <conf>${prefix}/etc</conf>
    <connector>
        <!-- Uncomment out this block and edit the keystorePath and keystorePassword
             to enable SSL support
        <ssl>
            <enabled>true</enabled>
            <keystorePath>/path/to/keystore.ks</keystorePath>
            <keystorePassword>keystorepass</keystorePassword>
        </ssl>-->
        <qpidnio>true</qpidnio>
        <transport>nio</transport>
        <port>5672</port>
        <sslport>8672</sslport>
        <socketReceiveBuffer>32768</socketReceiveBuffer>
        <socketSendBuffer>32768</socketSendBuffer>
    </connector>
    <management>
        <enabled>true</enabled>
    </management>
    <advanced>
        <filterchain enableExecutorPool="true"/>
        <enablePooledAllocator>false</enablePooledAllocator>
        <enableDirectBuffers>false</enableDirectBuffers>
        <framesize>65535</framesize>
        <compressBufferOnQueue>false</compressBufferOnQueue>
    </advanced>
    <security>
        <principal-databases>
            <principal-database>
                <name>passwordfile</name>
                <class>org.apache.qpid.server.security.auth.PasswordFilePrincipalDatabase</class>
                <attributes>
                    <attribute>
                        <name>passwordFile</name>
                        <value>${conf}/passwd</value>
                    </attribute>
                </attributes>
            </principal-database>
        </principal-databases>
        <sasl>
            <mechanisms>
                <mechanism>
                    <initialiser>
                        <class>org.apache.qpid.server.security.auth.CRAMMD5Initialiser</class>
                        <principal-database>passwordfile</principal-database>
                    </initialiser>
                </mechanism>
                <mechanism>
                    <initialiser>
                        <class>org.apache.qpid.server.security.auth.amqplain.AmqPlainInitialiser</class>
                        <principal-database>passwordfile</principal-database>
                    </initialiser>
                </mechanism>
                <mechanism>
                    <initialiser>
                        <class>org.apache.qpid.server.security.auth.plain.PlainInitialiser</class>
                        <principal-database>passwordfile</principal-database>
                    </initialiser>
                </mechanism>
            </mechanisms>
        </sasl>
    </security>
	<virtualhosts>
		<virtualhost>
			<name>localhost</name>
			<localhost>
			    <store>
					<class>org.apache.qpid.server.store.berkeleydb.BDBMessageStore</class>
					<!--<class>org.apache.qpid.server.store.MemoryMessageStore</class>-->
					<environment-path>localhost-store</environment-path>
			    </store>		
			</localhost>
		</virtualhost>
		
		<virtualhost>
			<name>development</name>
			<development>
			    <store>
					<class>org.apache.qpid.server.store.MemoryMessageStore</class>
                    <!--<class>org.apache.qpid.server.store.berkeleydb.BDBMessageStore</class>-->
                    <environment-path>development-store</environment-path>
                </store>
			</development>
		</virtualhost>
		
		<virtualhost>
			<name>test</name>
			<test>
			    <store>
					<class>org.apache.qpid.server.store.MemoryMessageStore</class>
                    <!--<class>org.apache.qpid.server.store.berkeleydb.BDBMessageStore</class>-->
                    <environment-path>test-store</environment-path>

			    </store>
			</test>
		</virtualhost>
		
	</virtualhosts>
    <heartbeat>
        <delay>0</delay>
        <timeoutFactor>2.0</timeoutFactor>
    </heartbeat>
    <queue>
        <auto_register>true</auto_register>
    </queue>

    <virtualhosts>${conf}/virtualhosts.xml</virtualhosts>
</broker>
