<?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-Exchanges">
  <title>Exchanges</title>
  <para><link linkend="Java-Broker-Concepts-Exchanges">Exchanges</link> can be managed using the
    HTTP or AMQP channels.</para>
  <section xml:id="Java-Broker-Management-Managing-Exchanges-Types">
    <title>Types</title>
    <para><itemizedlist>
        <listitem>
          <para>Direct</para>
        </listitem>
        <listitem>
          <para>Topic</para>
        </listitem>
        <listitem>
          <para>Fanout</para>
        </listitem>
        <listitem>
          <para>Headers</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Exchanges-Attributes">
    <title>Attributes</title>
    <para><itemizedlist>
        <listitem>
          <para><emphasis>Name of the exchange</emphasis>. Message producers refer to this name when
            producing messages.</para>
        </listitem>
        <listitem>
          <para><emphasis>Type of the exchange</emphasis>. Can be either <link linkend="Java-Broker-Concepts-Exchanges-Types-Direct">direct</link>, <link linkend="Java-Broker-Concepts-Exchanges-Types-Topic">topic</link>, <link linkend="Java-Broker-Concepts-Exchanges-Types-Fanout">fanout</link>, or <link linkend="Java-Broker-Concepts-Exchanges-Types-Headers">headers</link>.</para>
        </listitem>
        <listitem>
          <para><emphasis>Durable</emphasis>. Whether the exchange survives a restart.</para>
        </listitem>
        <listitem>
            <para><emphasis>Durable</emphasis>. Whether the exchange survives a restart.</para>
        </listitem>
        <listitem>
            <para><emphasis>alternateBinding</emphasis>. Provides an alternate destination that, depending on behaviour
              requested by the producer, may be used if a message arriving at this exchange cannot be routed to at least
              one queue.</para>
        </listitem>
        <listitem>
            <para><emphasis>unroutableMessageBehaviour</emphasis>. (AMQP 1.0 only) Default behaviour to apply when a
                message is not routed to any queues.</para>
        </listitem>
      </itemizedlist></para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Exchanges-Lifecycle">
    <title>Lifecycle</title>
    <para>Not supported</para>
  </section>
</section>
