Status
?? Current State: Proposed
?? Authors: booom( booom (jason) ?? GitHub)
?? Shepherds: yukon( zhouxinyu (yukon) ?? GitHub)
?? Mailing List discussion:
[email protected]
?? Pull Request:
?? Released: <relased_version>
Background & Motivation
What do we need to do
?? Will we add a new module? Yes.
?? Will we add new APIs? No.
?? Will we add new feature? Yes.
Why should we do that
?? Are there any problems of our current project?
The current mq client API is intrusive, to send message or consume message, we
should code to manage the mq infrastructure, and mixed it up with our business
logic codes.
?? What can we benefit proposed changes?
1. Encapsulate mq client API to support method invoking
style usage.
2. The encapsulation is easily extensible, to support
idempotence/eventually consistent/ fluid control extensions and so on.
3. Isolate the mq client manage code and the business
logic code, to help mq users improve their systems?? maintainability.
Goals
?? What problem is this proposal designed to
solve?
Unobtrusive mq client usage, and easily extensible to support
idempotence/eventually consistent/ fluid control extensions and so on.
?? To what degree should we solve the problem?
100%.
Non-Goals
?? What problem is this proposal NOT designed to
solve?
1. Add new features to classics mq client.
2. Affect compatibility.
?? Are there any limits of this proposal?
Only QSF(queue service framework) users will benefit.
Changes
Architecture
Interface Design/Change
?? Method signature changes
?? method name
?? parameter list
?? return value
Nothing.
?? Method behavior changes
Nothing.
?? CLI command changes
Nothing.
?? Log format or content changes
Nothing.
Compatibility, Deprecation, and Migration Plan
?? Are backward and forward compatibility taken
into consideration?
Yes.
?? Are there deprecated APIs?
Nothing.
?? How do we do migration?
Upgrade normally, no additional migration required.
Implementation Outline
We will implement the proposed changes by 1 phase. (QSF is implemented and
works well in our project)
Phase 1
Complete the QSF mq client encapsulation.
Complete the QSF idempotency support
Rejected Alternatives
There are no other alternatives.