Change ZeroMQ driver underlying pattern to REQ/REP

Registered by Oleksii Zamiatin

Current zmq driver implementation is built over PUSH/PULL PUB/SUB socket patterns. These kind of sockets are straight-forward one way directed. So, to organize some backward replies (as CALL method does) we need to support two socket pipelines PUSH/PULL for sending messages and subscribe for reply over PUB/SUB.

I assume that was made because of those days ZeroMQ restrictions. Now we have two-directions socket types like REQ/REP (Request-Reply). There is also ROUTER/DEALER async version of REQ/REP. I'd like to propose to use this pattern in zmq driver. This will reduce a second socket pipeline and a lot of surrounding code.

The proposed pattern substitution may significantly change the driver implementation itself but it doesn't affect the way services work with oslo.messaging. In other words oslo.messaging API will stay untouched.

We can consider some other way to provide one more driver, something like RZMQ (Request-Reply ZMQ) and leave PUSH/PULL implementation as is. So we'll have a chance to compare them and test them both.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Oleksii Zamiatin
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.