<?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-Broker">
  <title>Broker</title>
  <para>The <link linkend="Java-Broker-Concepts-Broker">Broker</link> is the principal entity. It is
    composed of a number of other entities that collaborate to provide message broker
    facilities.</para>
  <para>The Broker can only be managed via the HTTP management channel.</para>
  <section xml:id="Java-Broker-Management-Managing-Broker-Attributes">
    <title>Attributes</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Name the Broker</emphasis>. This helps distinguish between Brokers in
            environments that have many.</para>
        </listitem>
        <listitem>
          <para><emphasis>Shutdown timeout</emphasis>. Broker shutdown timeout in seconds (disabled if 0). If clean
            shutdown takes more than shutdown timeout, broker exits immediately.</para>
        </listitem>
        <listitem>
          <para><emphasis>Confidential configuration encryption provider</emphasis>. The name of the
            provider used to encrypt passwords and other secrets within the configuration. See <xref linkend="Java-Broker-Security-Configuration-Encryption"/>.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Broker-Context">
    <title>Context</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>broker.flowToDiskThreshold</emphasis> Controls the <link linkend="Java-Broker-Runtime-Flow-To-Disk">flow to disk</link> feature.</para>
        </listitem>
        <listitem>
          <para><emphasis>broker.messageCompressionEnabled</emphasis> Controls the <link linkend="Java-Broker-Runtime-Message-Compression">message compression</link> .</para>
        </listitem>
        <listitem xml:id="Java-Broker-Management-Managing-Broker-Context-StoreFilesystemMaxUsagePercent">
          <para><emphasis>store.filesystem.maxUsagePercent</emphasis> Maximum percentage of space
            that may be utilised on a filesystem hosting a virtualhost's message store before
            producer flow control is automatically imposed.</para>
          <para>This defaults to 90%.</para>
        </listitem>
        <listitem xml:id="Java-Broker-Management-Managing-Broker-Context-BrokerDefaultSupportedProtocolVersionReply">
          <para><emphasis>qpid.broker_default_supported_protocol_version_reply</emphasis> Used
            during protocol negotiation. If set, the Broker will offer this AMQP version to a client
            requesting an AMQP protocol that is not supported by the Broker. If not set, the Broker
            offers the highest protocol version it supports. </para>
        </listitem>
        <listitem>
          <para>
            <emphasis>qpid.broker_msg_auth</emphasis> If set true, the Broker ensures that the user
            id of each received message matches the user id of the producing connection. If this
            check fails, the message is returned to the producer's connection with a 403 (Access
            Refused) error code.</para>
          <para>This value can be overridden for each Virtual Host by setting the context value on the Virtual Host or
            Virtual Host Node.
          </para>
          <para>Defaults to false.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Broker-Children">
    <title>Children</title>
    <para>
      <itemizedlist>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-Virtualhost-Nodes">Virtualhost
              nodes</link>
          </para>
        </listitem>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-Ports">Ports</link>
          </para>
        </listitem>
        <listitem>
          <para>Authentication Providers</para>
        </listitem>
        <listitem>
          <para>Key Stores / Trust Stores</para>
        </listitem>
        <listitem>
          <para>Group Providers</para>
        </listitem>
        <listitem>
          <para>Access Control Providers</para>
        </listitem>
        <listitem>
          <para>Connection Limit Providers</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Broker-Lifecycle">
    <title>Lifecycle</title>
    <para>Not supported</para>
  </section>
</section>
