# Configure the Virtual Hosts via virtualhosts.xml

## virtualhosts.xml Overview

This configuration file contains details of all queues and topics, and associated properties, to be created on broker startup. These details are configured on a per virtual host basis.

Note that if you do not add details of a queue or topic you intend to use to this file, you must first create a consumer on a queue/topic before you can publish to it using Qpid.

Thus most application deployments need a virtualhosts.xml file with at least some minimal detail.

### XML Format with Comments

The virtualhosts.xml which currently ships as part of the Qpid distribution is really targeted at development use, and supports various artifacts commonly used by the Qpid development team.

As a result, it is reasonably complex. In the example XML below, I have tried to simplify one example virtual host setup which is possibly more useful for new users of Qpid or development teams looking to simply make use of the Qpid broker in their deployment.

I have also added some inline comments on each section, which should give some extra information on the purpose of the various elements.

    <virtualhosts>
        <!-- Sets the default virtual host for connections which do not specify a vh -->
        <default>localhost</default>
        <!-- Define a virtual host and all it's config -->
        <virtualhost>
            <name>localhost</name>
            <localhost>
                <!-- Define the types of additional AMQP exchange available for this vh -->
                <!-- Always get amq.direct (for queues) and amq.topic (for topics) by default -->
                <exchanges>
                    <!-- Example of declaring an additional exchanges type for developer use only -->
                    <exchange>
                        <type>direct</type>
                        <name>test.direct</name>
                        <durable>true</durable>
                    </exchange>
                </exchanges>

                <!-- Define the set of queues to be created at broker startup -->
                <queues>
                    <!-- The properties configured here will be applied as defaults to all -->
                    <!-- queues subsequently defined unless explicitly overridden -->
                    <exchange>amq.direct</exchange>
                    <!-- Set threshold values for queue monitor alerting to log -->
                    <maximumQueueDepth>4235264</maximumQueueDepth>  <!-- 4Mb -->
                    <maximumMessageSize>2117632</maximumMessageSize> <!-- 2Mb -->
                    <maximumMessageAge>600000</maximumMessageAge>  <!-- 10 mins -->

                    <!-- Define a queue with all default settings -->
                    <queue>
                        <name>ping</name>
                    </queue>
                    <!-- Example definitions of queues with overriden settings -->
                    <queue>
                        <name>test-queue</name>
                        <test-queue>
                            <exchange>test.direct</exchange>
                            <durable>true</durable>
                        </test-queue>
                    </queue>
                    <queue>
                        <name>test-ping</name>
                        <test-ping>
                            <exchange>test.direct</exchange>
                        </test-ping>
                    </queue>
                </queues>
            </localhost>
        </virtualhost>
    </virtualhosts>

### Using your own virtualhosts.xml

Note that the config.xml file shipped as an example (or developer default) in the Qpid distribution contains an element which defines the path to the virtualhosts.xml.

When using your own virtualhosts.xml you must edit this path to point at the location of your file.