<!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.8.&#160;Queues - 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-java-6.1.5/index.html">Qpid for Java 6.1.5</a></li><li><a href="/releases/qpid-java-6.1.5/java-broker/book/index.html">Apache Qpid Broker for Java</a></li><li>7.8.&#160;Queues</li></ul>

        <div id="-middle-content">
          <div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">7.8.&#160;Queues</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="Java-Broker-Management-Managing-Exchanges.html">Prev</a>&#160;</td><th align="center" width="60%">Chapter&#160;7.&#160;Managing Entities</th><td align="right" width="20%">&#160;<a accesskey="n" href="Java-Broker-Management-Managing-Consumers.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-Queues"></a>7.8.&#160;Queues</h2></div></div></div><p><a class="link" href="Java-Broker-Concepts-Queues.html" title="4.7.&#160;Queues">Queues</a> are named entities that
    hold/buffer messages for later delivery to consumer applications.</p><p>Queues can be managed using the HTTP or AMQP channels.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Queues-Types"></a>7.8.1.&#160;Types</h3></div></div></div><p>The Broker supports four different queue types, each with different delivery semantics.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Standard" title="4.7.1.1.&#160;Standard">Standard</a> - a simple First-In-First-Out (FIFO) queue</p></li><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Priority" title="4.7.1.2.&#160;Priority">Priority</a> - delivery order depends on the priority of each message</p></li><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Sorted" title="4.7.1.3.&#160;Sorted Queues">Sorted</a> -
            delivery order depends on the value of the sorting key property in each message</p></li><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-LVQ" title="4.7.1.4.&#160;Last Value Queues (LVQ)">Last Value
              Queue</a> - also known as an LVQ, retains only the last (newest) message received
            with a given LVQ key value</p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Queues-Attributes"></a>7.8.2.&#160;Attributes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>Name of the queue</em></span>. Message consumers and browsers refer to this
            name when they wish to subscribe to queue to receive messages from it.</p></li><li class="listitem"><p><span class="emphasis"><em>Type of the queue</em></span>. Can be either <a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Standard" title="4.7.1.1.&#160;Standard">standard</a>, <a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Priority" title="4.7.1.2.&#160;Priority">priority</a>, <a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Sorted" title="4.7.1.3.&#160;Sorted Queues">sorted</a>, or <a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-LVQ" title="4.7.1.4.&#160;Last Value Queues (LVQ)">lvq</a>.</p></li><li class="listitem"><p><span class="emphasis"><em>Durable</em></span>. Whether the queue survives a restart. Messages on a
            non durable queue do not survive a restart even if they are marked persistent.</p></li><li class="listitem"><p><span class="emphasis"><em>Maximum/Minimum TTL</em></span>. Defines a maximum and minimum
            time-to-live. Messages arriving with ttl larger than the maximum will be overridden by
            the maximum. Similarly, messages arriving with tll less than the minimum (or no ttl at
            all), will be overridden by the minimum.</p><p>Changing these values affects only new arrivals, existing messages already on the
            queue are not affected.</p></li><li class="listitem"><p><span class="emphasis"><em>Message persistent override</em></span>. Allow message persistent settings
            of incoming messages to be overridden. Changing this value affects only new arrivals,
            existing messages on the queue are not affected. </p></li><li class="listitem"><p><span class="emphasis"><em>Queue capacity</em></span>. Queues 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.&#160;Disk Space Management">Section&#160;9.2, &#8220;Disk Space Management&#8221;</a>.</p></li><li class="listitem"><p><span class="emphasis"><em>Alerting Thresholds</em></span>. Queues have the ability to alert on a
            variety of conditions: total queue depth exceeded a number or size, message age exceeded
            a threshold, message size exceeded a threshold. These thresholds are soft. See <a class="xref" href="Java-Broker-Appendix-Queue-Alerts.html" title="Appendix&#160;D.&#160;Queue Alerts">Appendix&#160;D, <em>Queue Alerts</em></a></p></li><li class="listitem"><p><span class="emphasis"><em>Maximum Delivery Count/Alternate Exchange</em></span>. See <a class="xref" href="Java-Broker-Runtime-Handling-Undeliverable-Messages.html" title="9.4.&#160;Handing Undeliverable Messages">Section&#160;9.4, &#8220;Handing Undeliverable Messages&#8221;</a></p></li><li class="listitem"><p><span class="emphasis"><em>Message Groups</em></span>. See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Message-Grouping" title="4.7.3.&#160;Messaging Grouping">Section&#160;4.7.3, &#8220;Messaging Grouping&#8221;</a></p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Queue-Children"></a>7.8.3.&#160;Children</h3></div></div></div><p>
      </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Binding</p></li></ul></div><p>
    </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Management-Managing-Queue-Lifecycle"></a>7.8.4.&#160;Lifecycle</h3></div></div></div><p>Not supported</p></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="Java-Broker-Management-Managing-Exchanges.html">Prev</a>&#160;</td><td align="center" width="20%"><a accesskey="u" href="Java-Broker-Management-Managing-Entities.html">Up</a></td><td align="right" width="40%">&#160;<a accesskey="n" href="Java-Broker-Management-Managing-Consumers.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">7.7.&#160;Exchanges&#160;</td><td align="center" width="20%"><a accesskey="h" href="AMQP-Messaging-Broker-Java-Book.html">Home</a></td><td align="right" valign="top" width="40%">&#160;7.9.&#160;Consumers</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>
