Configuring Virtual Host using configuration file This section describes how to configure Virtual Host using configuration XML. Virtual Host configuration XML can hold configuration for a single Virtual Host or multiple Virtual Hosts. When multiple Virtual Hosts are configured a section for the each virtual host needs to be added. It should contain a tag having the same name as virtual host. <virtualhosts> ... <virtualhost> <name>test</name> <test> ... </test> </virtualhost> <virtualhost> <name>development</name> <development> ... </development> </virtualhost> ... </virtualhosts> A configuration section for a virtual host "test" A configuration section for a virtual host "development"
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 config.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 ACL A 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 MemoryMessageStore vhostname org.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 BDBMessageStore vhostname org.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 DerbyMessageStore vhostname org.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 JDBCMessageStore vhostname org.apache.qpid.server.store.jdbc.JDBCMessageStore jdbc: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 VirtualHost vhostname ... direct test.direct true topic test.topic ... ]]>
Configuring Queues To create a priority, sorted or LVQ queue within configuration, add the appropriate xml to the virtualhost.xml configuration file within the queues element.
Simple For declaration of a simple queue define a queue entry in the virtual host configuration as in example below Configuring a simple queue my-simple-queue amq.direct true ]]>
Priority To defining a priority queue, add a <priority>true</priority> element. By default the queue will have 10 distinct priorities. Configuring a priority queue myqueue amq.direct true ]]> 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 priorities myqueue amq.direct true 4 ]]>
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 queue myqueue amq.direct message-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 queue myqueue amq.direct true ]]> 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 name myqueue amq.direct true ISIN ]]>
Configuring of Producer Flow Control Flow 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 limit test amq.direct 10485760 8388608 ]]> The default for all queues on a virtual host can also be set Configuring of default queue depth limit on virtualhost localhost 10485760 8388608 ]]>
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 store org.apache.qpid.server.store.berkeleydb.BDBMessageStore ${work}/bdbstore/test 50000000 45000000 ]]>
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 timeout 10000 20000 5000 15000 ]]>
Configuring DLQs/Maximum Delivery Count In 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-only false 0 dev-only-main-queue true 3 dev-only-other-queue localhost true 5 localhost-queue false ... ]]>
An example of virtual host configuration file An example of virtual host configuration file localhost org.apache.qpid.server.store.MemoryMessageStore 2 20000 direct test.direct true topic test.topic amq.direct 4235264 2117632 600000 50 queue ping test-queue test.direct true test-ping test.direct development org.apache.qpid.server.store.MemoryMessageStore 30000 50 queue amq.direct 4235264 2117632 600000 ping amq.direct 4235264 2117632 600000 test org.apache.qpid.server.store.derby.DerbyMessageStore ${QPID_WORK}/derbystore 30000 50 queue amq.direct 4235264 2117632 600000 ping amq.direct 4235264 2117632 600000 ]]>