This change introduces to possibility for the consumer application
to change the default oslo.messaging config options.
Same API interface as oslo.db have been taken.
The first option is executor_thread_pool_size.
This option was called rpc_thread_pool_size, but because it's used by
notification and rpc 'executor_thread_pool_size' looks a better name.
Changing executor_thread_pool_size default will be useful for ceilometer
the default of 64 is really to small to consume many notifications at
once for batching them. When is clearly sufficient for rpc stuffs.
Change-Id: Iea0d7a72e38d27c600403c815258aa5eee0d0c8c
The context manager in the executor fit only for the blocking executor.
Even the dispatcher needs to run code before and after the application
callback, eventlet and future executors have to run the pre/post code
into the main thread and can run the callback into an other thread,
and that force them to run __enter__ and __exit__ manually and deal
the exception path.
This change adds a helper object instead of the context manager.
It is designed to be explicit on what must be executed
before and after the callback and what can be done in a thread or not.
All the executor code is now in the impl_pooledexecutor.py
and use the futures "PoolExecutor" API.
This use futurist to provide a eventlet and aioeventlet futures friendly
object.
Change-Id: I8cd7640f36beeda47560e3c82671bad3530e38d1
Use stevedore.sphinxext to populate a new page listing all available
drivers.
Add docstrings to the driver classes, including references to more
extensive documentation if it is available.
Depends-on: I1a24f9326b4e54174d9dc0ae366315fe29c3ac1b
Depends-on: Ie715f98fe0d3cba8b2f4f6235e7c2b6f79be7ea0
Change-Id: Ief0aa05e6deba0126d63faf13497d0fe0539e08d
To avoid creating a new ZMQ connection for every message sent
to a remote broker, implement pooling and re-use of ZmqClient
objects and associated ZMQ context.
A pool is created for each remote endpoint (keyed by address);
the size of each pool is configured using rpc_conn_pool_size.
All outbound message client connections are pooled.
Closes-Bug: 1384113
Change-Id: Ia55d5c310a56e51df5e2f5d39e561a4da3fe4d83
This patch was proposed by this review:
https://review.openstack.org/#/c/31231
The unit test is added.
Change-Id: Ie124dc22f4ef3bbaeed76186cf08924a39b52812
Co-Authored-By: Eric Windisch <ewindisch@docker.com>
Closes-Bug: #1186310
The notification message did not contain a method keyword,
so it was ignored by consumers. Another in dispatch, the
notification msg confilict with other method.
Change-Id: I7c60c6f80006222d3cbe818d32288d043b55a7b8
Closes-Bug:#1368154
With eventlet 0.16, it becomes possible to run Oslo Messaging tests on
Python 3 with eventlet.
This change ports the zmq driver to Python 3:
* encode the topic explicitly to UTF-8
* use a list comprehension instead of map() to also get a list
on Python 3 (not a generator)
The following eventlet change is needed to run tests:
https://github.com/eventlet/eventlet/pull/187
Related eventlet issue:
https://github.com/eventlet/eventlet/issues/185
I will propose a different change to enable tests with eventlet enabled
when a release of eventlet including this fix will be available.
Change-Id: Ic8fec515cfa757e08ffb9604e3bfb2e87d08f3d8
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