Commit Graph

11 Commits

Author SHA1 Message Date
Doug Hellmann e55a83e832 Move files out of the namespace package
Move the public API out of oslo.messaging to oslo_messaging. Retain
the ability to import from the old namespace package for backwards
compatibility for this release cycle.

bp/drop-namespace-packages

Co-authored-by: Mehdi Abaakouk <mehdi.abaakouk@enovance.com>
Change-Id: Ia562010c152a214f1c0fed767c82022c7c2c52e7
2015-01-12 12:50:41 -05:00
Jenkins 6e4ccfa60c Merge "Create a new connection when a process fork has been detected" 2014-11-27 12:34:36 +00:00
Jenkins 0b839c57b7 Merge "Notification listener pools" 2014-11-27 11:56:42 +00:00
Kenneth Giusti 80e62aed7d Create a new connection when a process fork has been detected
This patch attempts to deal with applications that have forked the
process after connecting to the broker.  First, the creation of the
connection is delayed until the application attempts to perform a
messaging operation.  Second, each time the application performs a
messaging operation the current process id is checked against the id
of the process that created the connection.  If the process ids do not
match, the application has called os.fork().  The new child process
discards the existing connection and creates a new one.

Change-Id: I5455cb0f8d380d6b65f1268b34a91355cbb14aa2
Closes-Bug: #1392868
2014-11-26 21:24:54 -05:00
Mehdi Abaakouk 30e0aea877 Notification listener pools
We can now set the pool name of a notification listener
to create multiple groups/pools of listeners consuming notifications
and that each group/pool only receives one copy of each notification.

The AMQP implementation of that is to set queue_name with the pool name.

Implements blueprint notification-listener-pools
Closes-bug: #1356226

Change-Id: I8dc0549f5550f684a261c78c58737b798fcdd656
2014-11-14 10:20:18 +01:00
Kenneth Giusti f43fe66be0 Enable user authentication in the AMQP 1.0 driver
The TransportHost class allows user credentials to be supplied as part
of the URL that identifies the host.  Prior to this patch, these
credentials - username and password - were ignored by the AMQP 1.0
driver.  This prevents connections to a message broker that has been
configured to use SASL PLAIN authentication.

Closes-Bug: #1385445
Change-Id: Ib9279ed40b0f4cff62e1c742069c8f49f5625659
2014-10-31 11:46:24 -04:00
Jenkins 9de00b7f22 Merge "Add missing deprecated group amqp1" 2014-10-23 00:21:49 +00:00
Julien Danjou 8d242bd7ab Switch to oslo.serialization
Change-Id: I24be947cfc2d9ce60e65054e6562e544b1e21195
2014-09-23 14:54:30 +02:00
Mehdi Abaakouk 3fa6b8fe59 Add missing deprecated group amqp1
The group for options of amqp driver have been moved
in d753b030c6

This change adds the deprecated group for this options.

Change-Id: Id97a3fcfdaa5d231be217d6191792a538964b109
2014-09-17 16:30:43 +02:00
Mehdi Abaakouk d753b030c6 Ensure the amqp options are present in config file
This change ensures that the amqp1 will be present into the
configfile even the required python module are not present and
also put them into the correct section, [oslo_messaging_amqp1].

Change-Id: I1005405d7ed51090495688eadbe400dbff7c3cc9
2014-09-09 11:57:12 +02:00
Gordon Sim fbee94170f An initial implementation of an AMQP 1.0 based messaging driver
The key driver interfaces are implemented in the ProtonDriver class in
driver.py.  The logic for interfacing with Pyngus in order to
send/receive messages, manage AMQP connections and links, and handle
protocol events is in controller.py.  eventloop.py is a fairly generic
socket connection and I/O processor which runs in its own thread.
controller.py uses the eventloop.py thread to schedule subscription
and message send requests from the driver, as well as handle all
protocol event callbacks coming from Pyngus.

Included in this patch are a set of functional tests that can be run
under tox (tox -eamqp1).  These tests fully exercise the new driver,
from the driver API down to the 'wire' - nothing in the driver is
mocked out.  The functional tests implement a simple loopback test
broker, which allows the driver to send and receive messages via the
local network.  All RPC call patterns, RPC timeouts, and even broker
failover are verified by the included functional tests.

This driver uses the Pyngus module, which is a pure-python client API
built on the Proton AMQP 1.0 protocol engine library from the Apache
Qpid project.  Pyngus is available via pypi.python.org.

This driver introduces a dependency on the Proton AMQP 1.0 protocol
library, which is a platform-dependent library that must be installed
in order to use this driver and run the functional tests.

Change-Id: I871703e4cdc04cee3e6c214e911c9df464ede2ed
Implements: blueprint amqp10-driver-implementation
2014-09-04 15:12:43 -04:00