<!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>Chapter 4. Concepts - 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>Chapter 4. Concepts</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Concepts</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-CommandLine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Broker.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="Java-Broker-Concepts"></a>Chapter 4. Concepts</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="Java-Broker-Concepts.html#Java-Broker-Concepts-Overview">4.1. Overview</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Broker.html">4.2. Broker</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Virtualhost-Nodes.html">4.3. Virtualhost Nodes</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-RemoteReplicationNodes.html">4.4. Remote Replication Nodes</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Virtualhosts.html">4.5. Virtualhosts</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Exchanges.html">4.6. Exchanges</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-Predeclared">4.6.1. Predeclared Exchanges</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-Types">4.6.2. Exchange Types</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-BindingArguments">4.6.3. Binding Arguments</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage">4.6.4. Unrouteable Messages</a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html">4.7. Queues</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types">4.7.1. Types</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Message-Grouping">4.7.2. Messaging Grouping</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers">4.7.3. Forcing all consumers to be non-destructive</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-HoldingEntries">4.7.4. Holding messages on a Queue</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy">4.7.5. Controlling Queue Size</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-SetLowPrefetch">4.7.6. Using low pre-fetch with special queue types</a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Concepts-Ports.html">4.8. Ports</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Authentication-Providers.html">4.9. Authentication Providers</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html">4.10. Other Services</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Access-Control-Providers">4.10.1. Access Control Providers</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Connection-Limit-Providers">4.10.2. Connection Limit Providers</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Group-Providers">4.10.3. Group Providers</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Keystores">4.10.4. Keystores</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Truststores">4.10.5. Truststores</a></span></dt><dt><span class="section"><a href="Java-Broker-Concepts-Other-Services.html#Java-Broker-Concepts-Loggers">4.10.6. Loggers</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Concepts-Overview"></a>4.1. Overview</h2></div></div></div><p>The Broker comprises a number of entities. This section summaries the purpose of each of
    the entities and describes the relationships between them. These details are developed further
    in the sub-sections that follow.</p><p>The most important entity is the <span class="emphasis"><em>Virtualhost</em></span>. A virtualhost is an
    independent container in which messaging is performed. A <span class="emphasis"><em>virtualhost</em></span> exists
    in a container called a <span class="emphasis"><em>virtualhost node</em></span>. A virtualhost node has exactly
    one virtualhost.</p><p>An <span class="emphasis"><em>Exchange</em></span> accepts messages from a producer application and routes these
    to one or more <span class="emphasis"><em>Queues</em></span> according to pre-arranged criteria called
    <span class="emphasis"><em>bindings</em></span>. Exchange are an AMQP 0-8, 0-9, 0-9-1, 0-10 concept.  They exist to
    produce useful messaging behaviours such as fanout.  When using AMQP 0-8, 0-9, 0-9-1,  or 0-10, the
    exchange is the only way ingressing a message into the virtualhost.  When using AMQP
    1.0, the application may route messages using an exchange (to take advantage of advanced behaviours)
    or it may publish messages direct to a queue.
  </p><p><span class="emphasis"><em>Queue</em></span>s are named entities that hold/buffer messages for later delivery to
    consumer applications.
  </p><p><span class="emphasis"><em>Ports</em></span> accept connections for messaging and management. The Broker
    supports any number of ports. When connecting for messaging, the user specifies a virtualhost
    name to indicate the virtualhost to which it is to be connected.</p><p><span class="emphasis"><em>Authentication Providers</em></span> assert the identity of the user as it connects
    for messaging or management. The Broker supports any number of authentication providers. Each
    port is associated with exactly one authentication provider. The port uses the authentication
    provider to assert the identity of the user as new connections are received.</p><p><span class="emphasis"><em>Group Providers</em></span> provide mechanisms that provide grouping of users. A
    Broker supports zero or more group providers.</p><p><span class="emphasis"><em>Access Control Provider</em></span> allows the abilities of users (or groups of
    users) to be restrained. A Broker can have zero or one access control providers.</p><p><span class="emphasis"><em>Connection Limit Provider</em></span> restrains users (or groups of
    users) at opening new connections on AMQP ports.</p><p><span class="emphasis"><em>Keystores</em></span> provide a repositories of certificates and are used when the
    Broker accepts SSL connections. Any number of keystore providers can be defined. Keystores are
    be associated with Ports defined to accepts SSL.</p><p><span class="emphasis"><em>Truststores</em></span> provide a repositories of trust and are used to validate a
    peer. Any number of truststore provides can be defined. Truststores can be associated with Ports
    and other entities that form SSL connections.</p><p><span class="emphasis"><em>Remote Replication Nodes</em></span> are used when the high availability feature is
    in use. It is the remote representation of other virtualhost nodes that form part of the same
    group.</p><p><span class="emphasis"><em>Loggers</em></span>, at this point in the hierarchy, are responsible for the
    production of a log for the Broker.</p><p>These concepts will be developed over the forthcoming pages. The diagrams below also help
    put these entities in context of one and other.</p><p>
    </p><div class="figure"><a id="d0e403"></a><p class="title"><strong>Figure 4.1. Message Flow through Key Entities</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Broker-MessageFlow.png" height="360" alt="Message Flow through the Key Entities of the Broker" /></td></tr></table></div></div></div><p><br class="figure-break" />
  </p><p>
    </p><div class="figure"><a id="d0e415"></a><p class="title"><strong>Figure 4.2. Broker Structure showing major entities</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Broker-Model.png" height="360" alt="Broker Structure" /></td></tr></table></div></div></div><p><br class="figure-break" />
  </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-CommandLine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Broker.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.5. Using the command line </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"> 4.2. Broker</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>
