Thanks tison. I should have mentioned that I am happy to help contribute and review protocol doc improvements, too. :)
- Michael On Wed, Aug 31, 2022 at 11:09 AM tison <wander4...@gmail.com> wrote: > > > Also, as we build out the reactive client, it could be a good chance to > improve our protocol documentation > > Yes. When I'm hacking into a native Ruby client, I notice that the binary > protocol lacks a few significant communication process docs in detail. This > can help a lot contributors build applications/integrations around Apache > Pulsar. > > I can participate in this effort :) > > Best, > tison. > > > Michael Marshall <mmarsh...@apache.org> 于2022年8月31日周三 23:17写道: > > > +1 Great proposal. I think it makes sense to wrap the current pulsar > > Java client to make this client available sooner. > > > > Also, as we build out the reactive client, it could be a good chance > > to improve our protocol documentation, as these issues request [0] and > > [1]. > > > > Thanks, > > Michael > > > > [0] https://github.com/apache/pulsar/issues/17258 > > [1] https://github.com/apache/pulsar/issues/17260 > > > > On Wed, Aug 31, 2022 at 4:15 AM Nicolò Boschi <boschi1...@gmail.com> > > wrote: > > > > > > Absolutely +1, great initiative > > > > > > Nicolò Boschi > > > > > > > > > Il giorno mer 31 ago 2022 alle ore 04:22 guo jiwei <techno...@apache.org > > > > > > ha scritto: > > > > > > > +1 > > > > > > > > > > > > Regards > > > > Jiwei Guo (Tboy) > > > > > > > > > > > > On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <node...@gmail.com> wrote: > > > > > > > > > +1 > > > > > > > > > > Best regards, > > > > > Zixuan > > > > > > > > > > Joe F <joefranc...@gmail.com> 于2022年8月31日周三 08:53写道: > > > > > > > > > > > +1 > > > > > > > > > > > > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli < > > matteo.me...@gmail.com> > > > > > > wrote: > > > > > > > > > > > > > +1 > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > Matteo Merli > > > > > > > <matteo.me...@gmail.com> > > > > > > > > > > > > > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lhot...@apache.org> > > > > > wrote: > > > > > > > > > > > > > > > > Hi all, > > > > > > > > > > > > > > > > I have drafted PIP-204: Reactive Java client for Apache Pulsar. > > > > > > > > > > > > > > > > PIP link: > > > > > > > > https://github.com/apache/pulsar/issues/17335 > > > > > > > > > > > > > > > > Here's a copy of the contents of the GH issue for your > > references: > > > > > > > > > > > > > > > > Motivation > > > > > > > > > > > > > > > > There's a need to "go reactive from end-to-end" when building > > > > modern > > > > > > > > reactive applications with platforms such as Spring Reactive. > > > > > > > > There are ways to adapt the Apache Pulsar Java client async API > > > > calls > > > > > > to > > > > > > > > Reactive Streams with a few lines of code. > > > > > > > > However, a lot will be missing and achieving the complete > > solution > > > > > will > > > > > > > > require much more effort. > > > > > > > > > > > > > > > > A better solution would be to have first-class support Reactive > > > > > Streams > > > > > > > in > > > > > > > > Apache Pulsar. > > > > > > > > > > > > > > > > Reactive Streams <https://www.reactive-streams.org/> is an > > > > > > > interoperability > > > > > > > > specification and there are multiple implementations for the > > JVM. > > > > > > > > It's not about a single programming language. > > > > > > > > For example, a Reactive client for Apache Pulsar supporting > > > > Reactive > > > > > > > > Streams can be used together with Project Reactor / Spring > > > > Reactive, > > > > > > Akka > > > > > > > > Streams, RxJava 3, Vert.x, SmallRye Mutiny (RedHat/Quarkus) and > > > > > others. > > > > > > > > Goal > > > > > > > > > > > > > > > > Provide Reactive Java client for Apache Pulsar > > > > > > > > > > > > > > > > The Reactive Java client for Apache Pulsar exposes a Reactive > > > > Streams > > > > > > > > compatible Reactive client API for Apache Pulsar. > > > > > > > > Reactive programming is about non-blocking applications that > > are > > > > > > > > asynchronous and event-driven and require a small number of > > threads > > > > > to > > > > > > > > scale. The Reactive Java client for Apache Pulsar supports > > > > > non-blocking > > > > > > > > reactive asynchronous back pressure for producing and consuming > > > > > > messages > > > > > > > so > > > > > > > > that the producing or consuming pipeline doesn't get > > overwhelmed by > > > > > > > > producing or consuming. > > > > > > > > Libraries that support Reactive Streams provide a programming > > model > > > > > > that > > > > > > > is > > > > > > > > efficient and optimal for message producing and consuming > > > > > (processing) > > > > > > > use > > > > > > > > cases. > > > > > > > > API Changes > > > > > > > > > > > > > > > > Establish a Reactive Streams compatible client API for Apache > > > > Pulsar. > > > > > > > > This client will be published in Maven central as a library. > > > > > > > > Implementation > > > > > > > > > > > > > > > > There's an existing proof-of-concept available at > > > > > > > > https://github.com/datastax/pulsar . > > > > > > > > This implementation will be used as a reference for an > > entirely new > > > > > > > > implementation that is started as a new repository under the > > Apache > > > > > > > Pulsar > > > > > > > > project. > > > > > > > > > > > > > > > > The proposal for the repository location is > > > > > > > > https://github.com/apache/pulsar-client-reactive . > > > > > > > > The Maven central group Id is "org.apache.pulsar" and the main > > > > > artifact > > > > > > > id > > > > > > > > is "pulsar-client-reactive". > > > > > > > > The root package name is "org.apache.pulsar.reactive.client". > > > > > > > > > > > > > > > > The implementation will provide an interface module that > > abstracts > > > > > the > > > > > > > > Reactive client API. > > > > > > > > This interface is implemented by wrapping the current Apache > > Pulsar > > > > > > Java > > > > > > > > client and adapts the existing async Java API to the the > > Reactive > > > > > > client > > > > > > > > API. > > > > > > > > The reason for this particular detail is that it is possible to > > > > > > provide a > > > > > > > > native Reactive client later while having the possibility to > > start > > > > > > > > developing applications immediately using the Reactive client > > API. > > > > > > > > Applications depending on the API will be able to migrate to > > use > > > > the > > > > > > > native > > > > > > > > Reactive client with minor or no changes when it becomes > > available. > > > > > > > > Anything else? > > > > > > > > > > > > > > > > By having an official Reactive Java client for Apache Pulsar, > > it > > > > will > > > > > > > > provide a way to contribute and improve the official client. > > > > > > > > Other opensource projects might want to provide support for > > using > > > > > > Apache > > > > > > > > Pulsar within reactive application frameworks. Without an > > official > > > > > > > reactive > > > > > > > > client, this becomes hard, since open source projects would > > like to > > > > > use > > > > > > > > stable client dependencies instead of a hobby project provided > > by > > > > an > > > > > > > > individual. > > > > > > > > There are several members within the existing Apache Pulsar > > > > > > contributors > > > > > > > > and committers that have expressed the desire to contribute to > > a > > > > > > Reactive > > > > > > > > client for Apache Pulsar and are willing to maintain the new > > > > > > repository. > > > > > > > > With the new repository and sub-project we will most likely > > see new > > > > > > > active > > > > > > > > contributors and could possibly appoint new Apache Pulsar > > > > committers > > > > > to > > > > > > > the > > > > > > > > project to empower the developers working on this new > > sub-project. > > > > > > > > > > > > > > > > I'm looking forward to the discussion. > > > > > > > > > > > > > > > > > > > > > > > > BR, > > > > > > > > > > > > > > > > > > > > > > > > Lari > > > > > > > > > > > > > > > > > > > > > > > >