<?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.

-->

<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Appendix-Queue-Alerts">
  <title>Queue Alerts</title>
  <para>The Broker supports a variety of queue alerting thresholds. Once configured on a queue,
    these limits will be periodically written to the log if these limits are breached, until the
    condition is rectified.</para>
  <para>For example, if queue <literal>myqueue</literal> is configured with a message count alert of
    1000, and then owing to a failure of a downstream system messages begin to accumulate on the
    queue, the following alerts will be written periodically to the log. </para>
  <screen>INFO [default:VirtualHostHouseKeepingTask] (queue.NotificationCheck) - MESSAGE_COUNT_ALERT On Queue myqueue - 1272: Maximum count on queue threshold (1000) breached.
  </screen>
  <para>Note that queue alerts are <emphasis>soft</emphasis> in nature; breaching the limit will
    merely cause the alerts to be generated but messages will still be accepted to the queue.</para>
  <table pgwide="1" xml:id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages">
    <title>Queue Alerts</title>
    <tgroup cols="2">
      <colspec colnum="1" colname="alertname" colwidth="1*"/>
      <colspec colnum="2" colname="purpose" colwidth="1*"/>
      <thead>
        <row>
          <entry>Alert Name</entry>
          <entry>Alert Format and Purpose</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry morerows="1">MESSAGE_COUNT_ALERT</entry>
          <entry> MESSAGE_COUNT_ALERT On Queue <replaceable>queuename</replaceable> -
              <replaceable>number of messages</replaceable>: Maximum count on queue threshold
              (<replaceable>limit</replaceable>) breached. </entry>
        </row>
        <row>
          <entry>
            <para>The number of messages on the given queue has breached its configured
              limit.</para>
          </entry>
        </row>
        <row>
          <entry morerows="1">MESSAGE_SIZE_ALERT</entry>
          <entry> MESSAGE_SIZE_ALERT On Queue <replaceable>queuename</replaceable>
              -<replaceable>message size</replaceable> : Maximum message size threshold
              (<replaceable>limit</replaceable>) breached. [Message ID=<replaceable>message
              id</replaceable>]</entry>
        </row>
        <row>
          <entry>
            <para>The size of an individual messages has breached its configured limit.</para>
          </entry>
        </row>
        <row>
          <entry morerows="1">QUEUE_DEPTH_ALERT</entry>
          <entry> QUEUE_DEPTH_ALERT On Queue <replaceable>queuename</replaceable> -
              <replaceable>total size of all messages on queue</replaceable> : Maximum queue depth
            threshold (<replaceable>limit</replaceable>) breached.</entry>
        </row>
        <row>
          <entry>
            <para>The total size of all messages on the queue has breached its configured
              limit.</para>
          </entry>
        </row>
        <row>
          <entry morerows="1">MESSAGE_AGE_ALERT</entry>
          <entry>MESSAGE_AGE_ALERT On Queue <replaceable>queuename</replaceable> - <replaceable>age
              of message</replaceable> : Maximum age on queue threshold
              (<replaceable>limit</replaceable>) breached. </entry>
        </row>
        <row>
          <entry>
            <para>The age of a message on the given queue has breached its configured limit.</para>
          </entry>
        </row>
      </tbody>
    </tgroup>
  </table>
</appendix>
