<!DOCTYPE html>
<!--
 -
 - 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.
 -
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>7.4. VirtualHosts - Apache Qpid&#8482;</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
    <script type="text/javascript">var _deferredFunctions = [];</script>
    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
    <!--[if lte IE 8]>
      <link rel="stylesheet" href="/ie.css" type="text/css"/>
      <script type="text/javascript" src="/html5shiv.js"></script>
    <![endif]-->

    <!-- Redirects for `go get` and godoc.org -->
    <meta name="go-import"
          content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
    <meta name="go-source"
          content="qpid.apache.org
https://github.com/apache/qpid-proton/blob/go1/README.md
https://github.com/apache/qpid-proton/tree/go1{/dir}
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
  </head>
  <body>
    <div id="-content">
      <div id="-top" class="panel">
        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>

        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>

        <ul id="-global-navigation">
          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
          <li><a href="/documentation.html">Documentation</a></li>
          <li><a href="/download.html">Download</a></li>
          <li><a href="/discussion.html">Discussion</a></li>
        </ul>
      </div>

      <div id="-menu" class="panel" style="display: none;">
        <div class="flex">
          <section>
            <h3>Project</h3>

            <ul>
              <li><a href="/overview.html">Overview</a></li>
              <li><a href="/components/index.html">Components</a></li>
              <li><a href="/releases/index.html">Releases</a></li>
            </ul>
          </section>

          <section>
            <h3>Messaging APIs</h3>

            <ul>
              <li><a href="/proton/index.html">Qpid Proton</a></li>
              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
            </ul>
          </section>

          <section>
            <h3>Servers and tools</h3>

            <ul>
              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
            </ul>
          </section>

          <section>
            <h3>Resources</h3>

            <ul>
              <li><a href="/dashboard.html">Dashboard</a></li>
              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
              <li><a href="/resources.html">More resources</a></li>
            </ul>
          </section>
        </div>
      </div>

      <div id="-search" class="panel" style="display: none;">
        <form action="http://www.google.com/search" method="get">
          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
          <button type="submit">Search</button>
          <a href="/search.html">More ways to search</a>
        </form>
      </div>

      <div id="-middle" class="panel">
        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.2.0/index.html">Qpid Broker-J 9.2.0</a></li><li><a href="/releases/qpid-broker-j-9.2.0/book/index.html">Apache Qpid Broker-J</a></li><li>7.4. VirtualHosts</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.4. VirtualHosts</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Management-Managing-Virtualhost-Nodes.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Managing Entities</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Management-Managing-RemoteReplicationNodes.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Management-Managing-Virtualhosts"></a>7.4. VirtualHosts</h2></div></div></div><p>A virtualhost is a independent namespace in which messaging is performed. Virtualhosts are
    responsible for the storage of message data.</p><p>Virtualhosts can only be managed by the HTTP management channel.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Virtualhosts-Types"></a>7.4.1. Types</h3></div></div></div><p>The following virtualhost types are supported. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>BDB - Virtualhost backed with Oracle Berkeley DB JE</p></li><li class="listitem"><p>BDB HA - Virtualhost backed with Oracle BDB utilising High Availability</p></li><li class="listitem"><p>DERBY - Virtualhost backed with Apache Derby</p></li><li class="listitem"><p>JDBC - Virtualhost backed with an external database <a href="#ftn.d0e5790" class="footnote" id="d0e5790"><sup class="footnote">[6]</sup></a></p></li><li class="listitem"><p>Memory - In-memory node (changes lost on Broker restart)</p></li><li class="listitem"><p>Provided - Virtualhost that co-locates message data within the parent virtualhost
            node <a href="#ftn.d0e5800" class="footnote" id="d0e5800"><sup class="footnote">[7]</sup></a>.</p></li></ul></div><p>
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Virtualhost-Context"></a>7.4.2. Context</h3></div></div></div><p>
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>use_async_message_store_recovery</em></span> Controls the <a class="link" href="Java-Broker-Runtime-Background-Recovery.html" title="9.8. Background Recovery">background recovery</a>
            feature.</p></li></ul></div><p>
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Virtualhost-Attributes"></a>7.4.3. Attributes</h3></div></div></div><p>
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>Name the virtualhost</em></span>. This is the name the messaging clients
            refer to when forming a connection to the Broker.</p></li><li class="listitem"><p><span class="emphasis"><em>Store Path/JDBC URL</em></span>. Refers the file system location or
            database URL used to store the message data.</p></li><li class="listitem"><p><span class="emphasis"><em>Store overflow/underflow</em></span>. Some virtualhosts have the ability to
            limit the of the cumulative size of all the messages contained within the store. This
            feature is described in detail <a class="xref" href="Java-Broker-Runtime-Disk-Space-Management.html" title="9.2. Disk Space Management">Section 9.2, “Disk Space Management”</a>.</p></li><li class="listitem"><p><span class="emphasis"><em>Connection thread pool size</em></span>. Number of worker threads
            used to perform messaging with connected clients.  </p><p>Defaults to 64 or double the maximum number of available processors, whichever
            is the larger.</p></li><li class="listitem"><p><span class="emphasis"><em>Number of selectors</em></span>. Number of worker threads
            used from the thread pool to dispatch I/O activity to the worker threads.</p><p>Defaults to one eighth of the thread pool size. Minimum 1.</p></li><li class="listitem"><p><span class="emphasis"><em>Store transaction timeouts</em></span>. Warns of long running producer
            transactions. See <a class="xref" href="Java-Broker-Runtime-Transaction-Timeout.html" title="9.3. Transaction Timeout">Section 9.3, “Transaction Timeout”</a></p></li><li class="listitem"><p><span class="emphasis"><em>Synchronization policy</em></span>. HA only. See <a class="xref" href="Java-Broker-High-Availability-Behaviour.html#Java-Broker-High-Availability-Behaviour-SynchronizationPolicy" title="10.4.2. Synchronization Policy">Section 10.4.2, “Synchronization Policy”</a></p></li></ul></div><p>
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Virtualhost-Children"></a>7.4.4. Children</h3></div></div></div><p>
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            <a class="link" href="Java-Broker-Management-Managing-Exchanges.html" title="7.6. Exchanges">Exchange</a>
          </p></li><li class="listitem"><p>
            <a class="link" href="Java-Broker-Management-Managing-Queues.html" title="7.7. Queues">Queue</a>
          </p></li></ul></div><p>
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Virtualhost-Lifecycle"></a>7.4.5. Lifecycle</h3></div></div></div><p>
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>Stop</em></span>. Stops the virtualhost. This closes any existing messaging
            connections to the virtualhost and prevents new ones. Any inflight transactions are
            rolled back. Non durable queues and non durable exchanges are lost. Transient messages
            or persistent messages on non-durable queues are lost.</p></li><li class="listitem"><p><span class="emphasis"><em>Start</em></span>. Activates the virtualhost.</p></li></ul></div><p>
    </p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.d0e5790" class="footnote"><p><a href="#d0e5790" class="para"><sup class="para">[6] </sup></a>JDBC 4.0 compatible drivers must be available. See <a class="xref" href="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver.html" title="F.2. Installing External JDBC Driver">Section F.2, “Installing External JDBC Driver”</a></p></div><div id="ftn.d0e5800" class="footnote"><p><a href="#d0e5800" class="para"><sup class="para">[7] </sup></a>Not available if Virtualhost Node type is JSON.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Management-Managing-Virtualhost-Nodes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Management-Managing-Entities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Management-Managing-RemoteReplicationNodes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">7.3. Virtualhost Nodes </td><td width="20%" align="center"><a accesskey="h" href="Apache-Qpid-Broker-J-Book.html">Home</a></td><td width="40%" align="right" valign="top"> 7.5. Remote Replication Nodes</td></tr></table></div></div>

          <hr/>

          <ul id="-apache-navigation">
            <li><a href="http://www.apache.org/">Apache</a></li>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
            <li><a href="/security.html">Security</a></li>
            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
          </ul>

          <p id="-legal">
            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
            The Apache Software Foundation; Licensed under
            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
            Proton, Apache, the Apache feather logo, and the Apache Qpid
            project logo are trademarks of The Apache Software
            Foundation; All other marks mentioned may be trademarks or
            registered trademarks of their respective owners
          </p>
        </div>
      </div>
    </div>
  </body>
</html>
