Agree, exiting API set require substantial improvement, to further refine
RocketMQ model.

On Fri, Oct 1, 2021 at 9:37 AM yukon <[email protected]> wrote:

> Great catch, we will draft a new version of client APIs in few days~
>
> On Wed, Sep 29, 2021 at 4:19 PM dongeforever <[email protected]>
> wrote:
>
> > The idea is OK.
> > And the same time, it is better to show more details.  Maybe drafting the
> > new API interface is a good way to dive deep.
> >
> > caigy <[email protected]> 于2021年9月28日周二 下午5:40写道:
> >
> > > RIP-25 Ease of Use Improvements on RocketMQ Client API
> > >
> > >
> > >   * Current Status: Draft
> > >   * Authors: caigy https://github.com/caigy
> > >   * Shepherds: duhengforever [email protected]
> > >   * Mailing List discussion: [email protected]
> > >   * Pull Request: #PR_NUMBER
> > >   * Released: <released_version>
> > >
> > >
> > > Background & Motivation
> > > ________________________________
> > >
> > > What do we need to do
> > >  * will we add a new module? No.
> > >  * will we add new APIs? Yes.
> > >  * will we add new feature? No.
> > >
> > >
> > > Why should we do that
> > >  * Are there any problems of our current project?
> > >     Currently, RocketMQ's client API is a bit complex, and there exists
> > > some unreasonable encapsulation. For example:
> > >     ** There are 20 methods for sending messages in DefaultProducer,
> with
> > > lack of encapsulation, which increases complexity in usage.
> > >     ** DefaultMQPushConsumer provides 10 constructors,which may make
> user
> > > difficult to choose one.
> > >     ** Class Message provides constructors with and without arguments,
> > and
> > > also provides getters/setters to operate fields of it,  which lacks
> good
> > > separation of required and non-required arguments.
> > >     API is important media for users to interact with RocketMQ, and it
> is
> > > worth investing effort in optimizing its design.
> > >
> > > * What can we benefit proposed changes?
> > >     Provide clear and easier-to-understand API of RocketMQ, make it
> > easier
> > > to use, especially for beginners.
> > >
> > >
> > >
> > > Goals
> > > ________________________________
> > >
> > > * What problem is this proposal designed to solve?
> > >    Optimize RocketMQ client APIs, including Producer, Consumer and
> > > Message, remove unnecessary APIs, and provide better encapsulation.
> > Current
> > > unreasonable APIs will be marked deprecated and will be removed in the
> > > future. After this optimization, the APIs should keep as stable as
> > possible.
> > >
> > > * To what degree should we solve the problem?
> > >     We wish developers can use RocketMQ more easily with new APIs.
> > >
> > >
> > > Non-Goals
> > > ________________________________
> > >
> > > * What problem is this proposal NOT designed to solve?
> > >    This proposal will NOT change feature and performance.
> > >
> > > * Are there any limits of this proposal?
> > >   Nothing specific.
> > >
> > >
> > >
> > > Changes
> > > ________________________________
> > >
> > > * Architecture
> > >  No architecture changes in this proposal.
> > >
> > > * Interface Design/Change
> > >    ** Method signature changes. Yes.
> > >    For example:
> > >        *** Add generic to support data type of message body in Message.
> > >        *** Support chain-call instantiation of Producer, Consumer,
> > > Message, eg:Message<String>.builder().topic("msg  topic").body("msg
> > > body").build();
> > >        *** Producer provides unified and stable send() API, which is
> like
> > > write() method of UNIX file I/O.
> > >        *** Add asynchronous message consumption API based on
> > > CompletableFuture in Consumer.
> > >        *** etc...
> > >
> > >    ** Method behavior changes. No.  CLI command changes. No.
> > >    ** Log format or content changes. No.
> > >
> > > * Compatibility, Deprecation, and Migration Plan
> > >    ** Are backward and forward compatibility taken into consideration?
> > >       Optimized APIs should NOT affect compatibility, some APIs would
> be
> > > marked deprecated. New features will use optimized APIs, encouraging
> > users
> > > not to use deprecated APIs.
> > >
> > >    ** Are there deprecated APIs?
> > >       Yes. Some unreasonable APIs will be deprecated in this RIP.
> > >
> > >   ** How do we do migration?
> > >       Unreasonable APIs are marked deprecated in this proposal, and
> will
> > > be removed in the future.
> > >
> > > * Implementation Outline
> > >   We will implement the proposed changes by 1 phase.
> > >   Phase 1
> > >      1. Collect pain points in using RocketMQ client APIs and redesign
> > > them.
> > >      2. Optimize those APIs.
> > >      3. Mark previous APIs deprecated.
> > >
> > >
> >
>

Reply via email to