blob: e5aa98cf96d65087ef3e9c01eea0fa574d92038f [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
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 id="AMQP-Compatibility">
<title>
AMQP compatibility
</title>
<para>
Qpid provides the most complete and compatible implementation
of AMQP. And is the most aggressive in implementing the latest
version of the specification.
</para>
<para>
There are two brokers:
</para>
<itemizedlist>
<listitem><para>C++ with support for AMQP 0-10</para></listitem>
<listitem><para>Java with support for AMQP 0-8 and 0-9 (0-10 planned)</para></listitem>
</itemizedlist>
<para>
There are client libraries for C++, Java (JMS), .Net (written in
C#), python and ruby.
</para>
<itemizedlist>
<listitem><para>All clients support 0-10 and interoperate with the C++
broker.
</para></listitem>
</itemizedlist>
<itemizedlist>
<listitem><para>The JMS client supports 0-8, 0-9 and 0-10 and interoperates
with both brokers.
</para></listitem>
</itemizedlist>
<itemizedlist>
<listitem><para>The python and ruby clients will also support all versions,
but the API is dynamically driven by the specification used and
so differs between versions. To work with the Java broker you
must use 0-8 or 0-9, to work with the C++ broker you must use
0-10.
</para></listitem>
</itemizedlist>
<itemizedlist>
<listitem><para>There are two separate C# clients, one for 0-8 that
interoperates with the Java broker, one for 0-10 that
inteoperates with the C++ broker.
</para></listitem>
</itemizedlist>
<para>
QMF Management is supported in Ruby, Python, C++, and via QMan
for Java JMX &amp; WS-DM.
</para>
<section role="h3" id="AMQPcompatibility-AMQPCompatibilityofQpidreleases-3A">
<title>
AMQP
Compatibility of Qpid releases:
</title>
<para>
Qpid implements the AMQP Specification, and as the specification
has progressed Qpid is keeping up with the updates. This means
that different Qpid versions support different versions of AMQP.
Here is a simple guide on what use.
</para>
<para>
Here is a matrix that describes the different versions supported
by each release. The status symbols are interpreted as follows:
</para>
<variablelist>
<varlistentry>
<term>Y</term>
<listitem><para>supported</para></listitem>
</varlistentry>
<varlistentry>
<term>N</term>
<listitem><para>unsupported</para></listitem>
</varlistentry>
<varlistentry>
<term>IP</term>
<listitem><para>in progress</para></listitem>
</varlistentry>
<varlistentry>
<term>P</term>
<listitem><para>planned</para></listitem>
</varlistentry>
</variablelist>
<table>
<title>AMQP Version Support by Qpid Release</title>
<tgroup cols="6">
<tbody>
<row>
<entry>
Component
</entry>
<entry>
Spec
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
M2.1
</entry>
<entry>
M3
</entry>
<entry>
M4
</entry>
<entry>
0.5
</entry>
</row>
<row>
<entry>
java client
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-9
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-8
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
java broker
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
P
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-9
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-8
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
c++ client/broker
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-9
</entry>
<entry>
Y
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
</row>
<row>
<entry>
python client
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-9
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-8
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
ruby client
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-8
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
C# client
</entry>
<entry>
0-10
</entry>
<entry>
 
</entry>
<entry>
 
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
 
</entry>
<entry>
0-8
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
</tbody>
</tgroup>
</table>
<!--h3-->
</section>
<section role="h3" id="AMQPcompatibility-InteroptablebyAMQPspecificationversion">
<title>
Interop
table by AMQP specification version
</title>
<para>
Above table represented in another format.
</para>
<table>
<title>AMQP Version Support - alternate format</title>
<tgroup cols="5">
<tbody>
<row>
<entry>
 
</entry>
<entry>
release
</entry>
<entry>
0-8
</entry>
<entry>
0-9
</entry>
<entry>
0-10
</entry>
</row>
<row>
<entry>
java client
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
java client
</entry>
<entry>
M2.1
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
java broker
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
java broker
</entry>
<entry>
trunk
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
P
</entry>
</row>
<row>
<entry>
java broker
</entry>
<entry>
M2.1
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
c++ client/broker
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
N
</entry>
<entry>
N
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
c++ client/broker
</entry>
<entry>
M2.1
</entry>
<entry>
N
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
python client
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
</row>
<row>
<entry>
python client
</entry>
<entry>
M2.1
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
ruby client
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
ruby client
</entry>
<entry>
trunk
</entry>
<entry>
Y
</entry>
<entry>
Y
</entry>
<entry>
P
</entry>
</row>
<row>
<entry>
C# client
</entry>
<entry>
M3 M4 0.5
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
<entry>
N
</entry>
</row>
<row>
<entry>
C# client
</entry>
<entry>
trunk
</entry>
<entry>
Y
</entry>
<entry>
N
</entry>
<entry>
Y
</entry>
</row>
</tbody>
</tgroup>
</table>
<!--h3-->
</section>
</section>