Merge "Add documentation explaining how to use the AMQP 1.0 driver"
This commit is contained in:
commit
dc51213f12
193
doc/source/AMQP1.0.rst
Normal file
193
doc/source/AMQP1.0.rst
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
-------------------------
|
||||||
|
AMQP 1.0 Protocol Support
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. currentmodule:: oslo.messaging
|
||||||
|
|
||||||
|
============
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
This release of oslo.messaging includes an experimental driver that
|
||||||
|
provides support for version 1.0 of the Advanced Message Queuing
|
||||||
|
Protocol (AMQP 1.0, ISO/IEC 19464).
|
||||||
|
|
||||||
|
The current implementation of this driver is considered
|
||||||
|
*experimental*. It is not recommended that this driver be used in
|
||||||
|
production systems. Rather, this driver is being provided as a
|
||||||
|
*technical preview*, in hopes that it will encourage further testing
|
||||||
|
by the AMQP 1.0 community.
|
||||||
|
|
||||||
|
More detail regarding the driver's implementation is available from the `specification`_.
|
||||||
|
|
||||||
|
.. _specification: https://git.openstack.org/cgit/openstack/oslo-specs/tree/specs/juno/amqp10-driver-implementation.rst
|
||||||
|
|
||||||
|
=============
|
||||||
|
Prerequisites
|
||||||
|
=============
|
||||||
|
|
||||||
|
This driver uses the Apache QPID `Proton`_ AMQP 1.0 protocol engine.
|
||||||
|
This engine consists of a platform specific library and a python
|
||||||
|
binding. The driver does not directly interface with the engine API,
|
||||||
|
as the API is a very low-level interface to the AMQP protocol.
|
||||||
|
Instead, the driver uses the pure python `Pyngus`_ client API, which
|
||||||
|
is layered on top of the protocol engine.
|
||||||
|
|
||||||
|
.. _Proton: http://qpid.apache.org/proton/index.html
|
||||||
|
.. _Pyngus: https://github.com/kgiusti/pyngus
|
||||||
|
|
||||||
|
In order to run the driver the Proton Python bindings, Proton
|
||||||
|
library, Proton header files, and Pyngus must be installed.
|
||||||
|
|
||||||
|
Pyngus is available via `Pypi`__.
|
||||||
|
|
||||||
|
.. __: https://pypi.python.org/pypi/pyngus
|
||||||
|
|
||||||
|
While the Proton Python bindings are available via `Pypi`__, it
|
||||||
|
includes a C extension that requires the Proton library and header
|
||||||
|
files be pre-installed in order for the binding to install properly.
|
||||||
|
If the target platform's distribution provides a pre-packaged version
|
||||||
|
of the Proton Python binding (see packages_ below), it is recommended
|
||||||
|
to use these pre-built packages instead of pulling them from Pypi.
|
||||||
|
|
||||||
|
.. __: https://pypi.python.org/pypi/python-qpid-proton
|
||||||
|
|
||||||
|
The driver also requires a *broker* that supports version 1.0 of the
|
||||||
|
AMQP protocol.
|
||||||
|
|
||||||
|
The driver has only been tested using `qpidd`_ in a `patched
|
||||||
|
devstack`_ environment. The version of qpidd **must** be at least
|
||||||
|
0.26. qpidd also uses the Proton engine for its AMQP 1.0 support, so
|
||||||
|
the Proton library must be installed on the system hosting the qpidd
|
||||||
|
daemon.
|
||||||
|
|
||||||
|
.. _qpidd: http://qpid.apache.org/components/cpp-broker/index.html
|
||||||
|
.. _patched devstack: https://review.openstack.org/#/c/109118/
|
||||||
|
|
||||||
|
At present, RabbitMQ does not work with this driver. This driver
|
||||||
|
makes use of the *dynamic* flag on the link Source to automatically
|
||||||
|
provision a node at the peer. RabbitMQ's AMQP 1.0 implementation has
|
||||||
|
yet to implement this feature.
|
||||||
|
|
||||||
|
See the `specification`_ for additional information regarding testing
|
||||||
|
done on the driver.
|
||||||
|
|
||||||
|
=============
|
||||||
|
Configuration
|
||||||
|
=============
|
||||||
|
|
||||||
|
driver
|
||||||
|
------
|
||||||
|
|
||||||
|
It is recommended to start with the default configuration options
|
||||||
|
supported by the driver. The remaining configuration steps described
|
||||||
|
below assume that none of the driver's options have been manually
|
||||||
|
overridden.
|
||||||
|
|
||||||
|
**Note Well:** The driver currently does **not** support the generic
|
||||||
|
*amqp* options used by the existing drivers, such as
|
||||||
|
*amqp_durable_queues* or *amqp_auto_delete*. Support for these are
|
||||||
|
TBD.
|
||||||
|
|
||||||
|
qpidd
|
||||||
|
-----
|
||||||
|
|
||||||
|
First, verify that the Proton library has been installed and is
|
||||||
|
imported by the qpidd broker. This can checked by running::
|
||||||
|
|
||||||
|
$ qpidd --help
|
||||||
|
|
||||||
|
and looking for the AMQP 1.0 options in the help text. If no AMQP 1.0
|
||||||
|
options are listed, verify that the Proton libraries are installed and
|
||||||
|
that the version of qpidd is greater than or equal to 0.26.
|
||||||
|
|
||||||
|
Second, configure the address patterns used by the driver. This is
|
||||||
|
done by adding the following to /etc/qpid/qpidd.conf::
|
||||||
|
|
||||||
|
queue-patterns=exclusive
|
||||||
|
queue-patterns=unicast
|
||||||
|
topic-patterns=broadcast
|
||||||
|
|
||||||
|
These patterns, *exclusive*, *unicast*, and *broadcast* are the
|
||||||
|
default values used by the driver. These can be overridden via the
|
||||||
|
driver configuration options if desired. If manually overridden,
|
||||||
|
update the qpidd.conf values to match.
|
||||||
|
|
||||||
|
services
|
||||||
|
--------
|
||||||
|
|
||||||
|
The new driver is selected by specifying **amqp** as the transport
|
||||||
|
name. For example::
|
||||||
|
|
||||||
|
from oslo import messaging
|
||||||
|
from olso.config import cfg
|
||||||
|
|
||||||
|
amqp_transport = messaging.get_transport(cfg.CONF,
|
||||||
|
"amqp://me:passwd@host:5672")
|
||||||
|
|
||||||
|
|
||||||
|
The new driver can be loaded and used by existing applications by
|
||||||
|
specifying *amqp* as the RPC backend in the service's configuration
|
||||||
|
file. For example, in nova.conf::
|
||||||
|
|
||||||
|
rpc_backend = amqp
|
||||||
|
|
||||||
|
.. _packages:
|
||||||
|
|
||||||
|
======================
|
||||||
|
Platforms and Packages
|
||||||
|
======================
|
||||||
|
|
||||||
|
Pyngus is available via Pypi.
|
||||||
|
|
||||||
|
Pre-built packages for the Proton library and qpidd are available for
|
||||||
|
some popular distributions:
|
||||||
|
|
||||||
|
RHEL and Fedora
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Packages exist in EPEL for RHEL/Centos 7, and Fedora 19+.
|
||||||
|
Unfortunately, RHEL/Centos 6 base packages include a very old version
|
||||||
|
of qpidd that does not support AMQP 1.0. EPEL's policy does not allow
|
||||||
|
a newer version of qpidd for RHEL/Centos 6.
|
||||||
|
|
||||||
|
The following packages must be installed on the system running the
|
||||||
|
qpidd daemon:
|
||||||
|
|
||||||
|
- qpid-cpp-server (version 0.26+)
|
||||||
|
- qpid-proton-c
|
||||||
|
|
||||||
|
The following packages must be installed on the systems running the
|
||||||
|
services that use the new driver:
|
||||||
|
|
||||||
|
- Proton libraries: qpid-proton-c-devel
|
||||||
|
- Proton python bindings: python-qpid-proton
|
||||||
|
- pyngus (via Pypi)
|
||||||
|
|
||||||
|
Debian and Ubuntu
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Packages for the Proton library, headers, and Python bindings are
|
||||||
|
available in the Debian/Testing repository. Proton packages are not
|
||||||
|
yet available in the Ubuntu repository. The version of qpidd on both
|
||||||
|
platforms is too old and does not support AMQP 1.0.
|
||||||
|
|
||||||
|
Until the proper package version arrive the latest packages can be
|
||||||
|
pulled from the `Apache Qpid PPA`_ on Launchpad::
|
||||||
|
|
||||||
|
sudo add-apt-repository ppa:qpid/released
|
||||||
|
|
||||||
|
.. _Apache Qpid PPA: https://launchpad.net/~qpid/+archive/ubuntu/released
|
||||||
|
|
||||||
|
The following packages must be installed on the system running the
|
||||||
|
qpidd daemon:
|
||||||
|
|
||||||
|
- qpidd (version 0.26+)
|
||||||
|
- libqpid-proton2
|
||||||
|
|
||||||
|
The following packages must be installed on the systems running the
|
||||||
|
services that use the new driver:
|
||||||
|
|
||||||
|
- Proton libraries: libqpid-proton2-dev
|
||||||
|
- Proton python bindings: python-qpid-proton
|
||||||
|
- pyngus (via Pypi)
|
@ -20,6 +20,7 @@ Contents
|
|||||||
exceptions
|
exceptions
|
||||||
opts
|
opts
|
||||||
conffixture
|
conffixture
|
||||||
|
AMQP1.0
|
||||||
contributing
|
contributing
|
||||||
|
|
||||||
Release Notes
|
Release Notes
|
||||||
|
Loading…
Reference in New Issue
Block a user