ZeroMQ driver options are current stored into the DEFAULT group.
This change makes the zmq configuration clearer by putting its
options into oslo_messaging_zmq group.
Change-Id: Ia00fda005b1664750d2646f8c82ebdf295b156fb
Closes-bug: #1417040
Co-Authored-By: Oleksii Zamiatin <ozamiatin@mirantis.com>
This options helps to prevent message loss by scheduling
messages only to a connected queue. If there is no connections
socket hangs waiting.
Change-Id: I87b97c8b77887f53599a28e0d05fc2c71c149499
Closes-Bug: #1606272
No reasons to kept fanout queues in case then
a rpc server is gracefully shutdown. The expiration
time of the fanout queue is too long (30 mins), so for
large scales it can accumulate a lot of messages before it be removed
Closes-Bug: 1606213
Change-Id: Ieaa35c454df542042f3a5424d70f87d486693024
Currently proxy binds to a random port from a port range
specified in zmq config and therefore needs to register in
redis to become visible to clients and servers.
That could be done much simpler by using a static port(s) for
proxy. Moreover zmq handles reconnect to a socket if restarted
service uses the same port number as it had before restart.
Change-Id: I088792fd08a4161d08e9160830fc3ec4d560cca4
We can reduce a workload of rabbitmq through implementation
of expiration mechanism for idle connections in the pool with
next properties:
conn_pool_ttl (default 20 min)
conn_pool_min_size: the pool size limit for expire() (default 2)
The problem is timeless idle connections in the pool, which can be created
via some single huge workload of RPCServer. One SEND connection is heartbeat
thread + some network activity every n second. So, we can reduce it.
Here is two ways to implement an expiration:
[1] Create a separated thread for checking expire date of connections
[2] Make call expire() on pool.get() or pool.put()
The [1] has some threading overhead, but probably insignificant
because the thread can sleep 99% time and wake up every 20 mins (by default).
Anyway current implementation is [2].
Change-Id: Ie8781d10549a044656824ceb78b2fe2e4f7f8b43
Many assertEqual sentences don't follow assertEqual(expected, actual),
These misplaces have 2 impacts:
1, giving confusing messages when some tests failed.
2, mislead other developers, new test modules may follow these wrong pattern.
This patch fix all of them.
Change-Id: Icc6e404dd02fe47b76c7366d31d91c8d8e464f54
Closes-Bug: #1604213
This patch merges small logically related publishers supporting
only some messaging patterns into bigger ones supporting all
messaging patterns at once.
Change-Id: Ic47e4d89166dd14f8a67101e666dc780a1ccb2a8
Now that there is a passing gate job, we can claim support for
Python 3.5 in the classifier. This patch also adds the convenience
py35 venv.
Change-Id: I8871f4e17ab806c00661d0c960a216d0a3fc5449
Replace assertEqual(None, *) with assertIsNone in tests to have more
clear messages in case of failure.
Change-Id: Idb0376964ecc65d04e5b79753efd8f6a0b822bf8
Closes-Bug: #1280522
This patch refactors publishers by separating responsibilities and
introducing senders and waiters within publishers.
Change-Id: I90df59d61af2b40b516a5151c67c184fcc91e366
Co-Authored-By: Oleksii Zamiatin <ozamiatin@mirantis.com>