<?xml version="1.0"?>
<!--

 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.

-->

<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Management-Managing-Consumers">
  <title>Consumers</title>
  <para>A Consumer represents an application's live <emphasis>subcription</emphasis> to a queue.  Its presence
    in the model indicates that an application is currently connected to the queue <emphasis>at this moment</emphasis>.
  </para>
  <section xml:id="Java-Broker-Management-Managing-Consumers-Context">
    <title>Context</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>consumer.suspendNotificationPeriod</emphasis> Governs the length of
           time that a consumer may remain suspended before the the Broker begins to
           produce <link linkend="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003">SUB-1003</link>
            operational log messages.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
</section>
