<?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-System-Properties">
  <title>System Properties</title>
  <para>The following table describes the Java system properties used by the Broker to control
    various optional behaviours.</para>
  <para>The preferred method of enabling these system properties is using the <link linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><literal>QPID_OPTS</literal></link> environment variable described in the previous
    section.</para>
  <table pgwide="1">
    <title>System properties</title>
    <tgroup cols="3">
      <thead>
        <row>
          <entry>System property</entry>
          <entry>Default</entry>
          <entry>Purpose</entry>
        </row>
      </thead>
      <tbody>
        <row xml:id="Java-Broker-Appendix-System-Properties-Broker-Heartbeat-Timeout-Factor">
          <entry>qpid.broker_heartbeat_timeout_factor</entry>
          <entry>2</entry>
          <entry>Factor to determine the maximum length of that may elapse between heartbeats being
            received from the peer before a connection is deemed to have been broken.</entry>
        </row>
        <row xml:id="Java-Broker-Appendix-System-Properties-Broker-Dead-Letter-Exchange-Suffix">
          <entry>qpid.broker_dead_letter_exchange_suffix</entry>
          <entry>_DLE</entry>
          <entry>Used with the <xref linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"/>
            feature. Governs the suffix used when generating a name for a Dead Letter
            Exchange.</entry>
        </row>
        <row xml:id="Java-Broker-Appendix-System-Properties-Broker-Dead-Letter-Queue-Suffix">
          <entry>qpid.broker_dead_letter_queue_suffix</entry>
          <entry>_DLQ</entry>
          <entry>Used with the <xref linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"/>
            feature. Governs the suffix used when generating a name for a Dead Letter Queue.</entry>
        </row>
        <row xml:id="Java-Broker-Appendix-System-Properties-Broker-Status-Updates">
          <entry>qpid.broker_status_updates</entry>
          <entry>true</entry>
          <entry>
            <para>If set true, the Broker will produce operational logging messages.</para>
          </entry>
        </row>
        <row xml:id="Java-Broker-Appendix-System-Properties-Broker-Disabled-Features">
          <entry>qpid.broker_disabled_features</entry>
          <entry>none</entry>
          <entry>
            <para>Allows optional Broker features to be disabled. Currently understood feature
              names are: <literal>qpid.jms-selector</literal></para>
            <para>Feature names should be comma separated.</para>
          </entry>
        </row>
      </tbody>
    </tgroup>
  </table>
</appendix>
