Virtual Host XML configuration fileIntroduction
This chapter describes how to configure Virtual Hosts using an XML file.
This is no longer the preferred approach for
defining a VirtualHost and will likely be removed
in a future release, however it is currently neccessary to support certain use cases such as per-virtualhost attribute
configuration, and specialised store configuration such as for the BDB HA Message Store
Each XML Virtual Host configuration file can hold configuration for a single Virtual Host or multiple Virtual Hosts.
For an example file (with multiple VirtualHosts), see Configuring ACL provides the details of ACL, rules, formats, etc.
To apply an ACL on a single virtualhost named test, add the following to the virtualhosts.xml:
<virtualhost>
...
<name>test</name>
<test>
...
<security>
...
<acl>${conf}/vhost_test.acl</acl>
...
</security>
...
</test>
</virtualhost>
A security section of configuration is used to declare the ACLA path to an ACL file is configured (assuming that conf has been set to a suitable
location such as ${QPID_HOME}/etc)Configuring MemoryMessageStore
An example of MemoryMessageStore configuration for a virtual host is shown below:
Configuring a VirtualHost to use the MemoryMessageStorevhostnameorg.apache.qpid.server.store.MemoryMessageStore
...
]]>Configuring BDBMessageStore
In order to use the BDBMessageStore, you must configure it for each VirtualHost desired by updating the store element
to specify the associated store class and provide a directory location for the data to be written, as shown below.
Configuring a VirtualHost to use the BDBMessageStorevhostnameorg.apache.qpid.server.store.berkeleydb.BDBMessageStore${QPID_WORK}/bdbstore/vhostname
...
]]>Configuring DerbyMessageStore
In order to use the DerbyMessageStore, you must configure it for each VirtualHost desired by updating the store element
to specify the associated store class and provide a directory location for the data to be written, as shown below.
Configuring a VirtualHost to use the DerbyMessageStorevhostnameorg.apache.qpid.server.store.DerbyMessageStore${QPID_WORK}/derbystore/vhostname
...
]]>Configuring JDBCMessageStore
JDBCMessageStore can be configured on VirtualHost as in example shown below:
Configuring a VirtualHost to use the JDBCMessageStorevhostnameorg.apache.qpid.server.store.jdbc.JDBCMessageStorejdbc:oracle:thin:guest@guest//localhost:1521/orcl
...
]]>Configuring Exchanges
To declare Exchanges within Virtual Host configuration, add the appropriate xml
to the virtualhost.xml configuration file within the exchanges element.
An example of such declaration is shown below:
Configuring Exchanges on VirtualHostvhostname
...
directtest.directtruetopictest.topic
...
]]>Configuring QueuesTo create a priority, sorted or LVQ queue within configuration, add the appropriate xml
to the virtualhost.xml configuration file within the queues
element.SimpleFor declaration of a simple queue define a queue entry in the virtual host configuration as in example belowConfiguring a simple queuemy-simple-queueamq.directtrue
]]>Priority To defining a priority queue, add a <priority>true</priority> element. By
default the queue will have 10 distinct priorities. Configuring a priority queuemyqueueamq.directtrue
]]> If you require fewer priorities, it is possible to specify a
priorities element (whose value is a integer value between 2 and 10
inclusive) which will give the queue that number of distinct priorities. When messages are
sent to that queue, their effective priority will be calculated by partitioning the
priority space. If the number of effective priorities is 2, then messages with priority
0-4 are treated the same as "lower priority" and messages with priority 5-9 are treated
equivalently as "higher priority". Configuring a priority queue with fewer prioritiesmyqueueamq.directtrue4
]]>Sorted To define a sorted queue, add a sortKey element. The value of the
sortKey element defines the message property to use the value of when
sorting the messages put onto the queue. Configuring a sorted queuemyqueueamq.directmessage-property-to-sort-by
]]>LVQ To define a LVQ, add a lvq element with the value
true. Without any further configuration this will define an LVQ
which uses the JMS message property qpid.LVQ_key as the key for
replacement. Configuring a LVQ queuemyqueueamq.directtrue
]]> If you wish to define your own property then you can do so using the
lvqKey element.Configuring a LVQ queue with custom message property namemyqueueamq.directtrueISIN
]]>Configuring of Producer Flow ControlFlow control capacity and flow resume capacity are required to set on a queue or virtual host to enable Producer flow control.Configuring a queue depth limittestamq.direct104857608388608
]]>
The default for all queues on a virtual host can also be set
Configuring of default queue depth limit on virtualhostlocalhost104857608388608
]]>
Configuring of Disk Quota-based Flow Control
An example of quota configuration for the BDB message store is provided below.
Configuring a limit on a storeorg.apache.qpid.server.store.berkeleydb.BDBMessageStore${work}/bdbstore/test5000000045000000
]]>
Configuring Transaction Timeouts The JMS transaction timeouts are configured on each virtual host defined in the XML
configuration files. The default values for each of the parameters is 0, indicating that the particular check
is disabled. Any or all of the parameters can be set, using the desired value in milliseconds, and will
be checked each time the housekeeping process runs, usually set to run every 30 seconds in
standard configuration. The meaning of each property is as follows:openWarn - the time a transaction can be open for (with activity occurring on it) after
which a warning alert will be issued.openClose - the time a transaction can be open for before the connection it is on is
closed.idleWarn - the time a transaction can be idle for (with no activity occurring on it)
after which a warning alert will be issued.idleClose - the time a transaction can be idle for before the connection it is on is
closed. The virtualhosts configuration is shown below, and must occur inside the
//virtualhosts/virtualhost/name/ elements: Configuring producer transaction timeout1000020000500015000
]]>Configuring DLQs/Maximum Delivery CountIn the below configuration it can be seen that DLQs/Maximum Delivery Count are enabled at
the virtual host "localhost" with maximum delivery count set to 5 and disable for virtual host "dev-only".As 'dev-only-main-queue' has its own configuration specified, this value overrides all
others and causes the features to be enabled for this queue. In contrast to this,
'dev-only-other-queue' does not specify its own value and picks up the false value specified for
its parent virtualhost, causing the DLQ/Maximum Delivery Count features to be disabled for this
queue. Any such queue in the 'dev-only' virtualhost which does not specify its own configuration
value will have the DLQ/Maximum Delivery Count feature disabled.The queue 'localhost-queue' has the DLQ/Maximum Delivery Count features disabled.
Any other queue in the 'localhost' virtualhost which does not specify
its own configuration value will have the features enabled (inherited from parent virtual host).Enabling DLQs and maximum delivery count at virtualhost and queue level within
virtualhosts.xml
...
dev-onlyfalse0dev-only-main-queuetrue3dev-only-other-queuelocalhosttrue5localhost-queuefalse
...
]]>
An example of virtual host configuration fileAn example of virtual host configuration filelocalhostorg.apache.qpid.server.store.MemoryMessageStore220000directtest.directtruetopictest.topicamq.direct4235264211763260000050queuepingtest-queuetest.directtruetest-pingtest.directdevelopmentorg.apache.qpid.server.store.MemoryMessageStore3000050queueamq.direct42352642117632600000pingamq.direct42352642117632600000testorg.apache.qpid.server.store.derby.DerbyMessageStore${QPID_WORK}/derbystore/test3000050queueamq.direct42352642117632600000pingamq.direct42352642117632600000
]]>