Change ZeroMQ driver underlying pattern to REQ/REP
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
- Started by
- Completed by