You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pulsar.apache.org by Lari Hotari <lh...@apache.org> on 2022/08/29 12:55:43 UTC

[DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

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

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Christophe Bornet <bo...@gmail.com>.
+1
Reactive is a perfect fit for streaming platforms.

Le lun. 29 août 2022 à 15:11, Lari Hotari <lh...@apache.org> a écrit :

> I updated it to be PIP-205 since there was a previous reference of
> PIP-204. :)
>
> -Lari
>
> On 2022/08/29 12:55:43 Lari Hotari 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
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Soby Chacko <sc...@gmail.com>.
+1 for a native reactive client for Pulsar. This would enable downstream
libraries (such as Spring for e.g.) to provide a choice between regular and
reactive Java clients. Looking forward to this addition.

Best regards,
Soby Chacko

On Tue, Aug 30, 2022 at 9:45 AM Alexander Preuss
<al...@streamnative.io.invalid> wrote:

> +1
> Having a reactive client for Pulsar would be very useful and would
> strengthen Pulsar as a project going forward.
>
> Best,
> Alexander
>
> On Tue, Aug 30, 2022 at 9:42 AM Enrico Olivelli <eo...@gmail.com>
> wrote:
>
> > I support the initiative, especially because I guess we will need someday
> > to build a new native Java client and do not wrap the existing one.
> > Also, Pulsar must be on that ecosystem with a strong presence.
> >
> > Enrico
> >
> > Il Lun 29 Ago 2022, 15:11 Lari Hotari <lh...@apache.org> ha scritto:
> >
> > > I updated it to be PIP-205 since there was a previous reference of
> > > PIP-204. :)
> > >
> > > -Lari
> > >
> > > On 2022/08/29 12:55:43 Lari Hotari 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
> > > >
> > >
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Alexander Preuss <al...@streamnative.io.INVALID>.
+1
Having a reactive client for Pulsar would be very useful and would
strengthen Pulsar as a project going forward.

Best,
Alexander

On Tue, Aug 30, 2022 at 9:42 AM Enrico Olivelli <eo...@gmail.com> wrote:

> I support the initiative, especially because I guess we will need someday
> to build a new native Java client and do not wrap the existing one.
> Also, Pulsar must be on that ecosystem with a strong presence.
>
> Enrico
>
> Il Lun 29 Ago 2022, 15:11 Lari Hotari <lh...@apache.org> ha scritto:
>
> > I updated it to be PIP-205 since there was a previous reference of
> > PIP-204. :)
> >
> > -Lari
> >
> > On 2022/08/29 12:55:43 Lari Hotari 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
> > >
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Enrico Olivelli <eo...@gmail.com>.
I support the initiative, especially because I guess we will need someday
to build a new native Java client and do not wrap the existing one.
Also, Pulsar must be on that ecosystem with a strong presence.

Enrico

Il Lun 29 Ago 2022, 15:11 Lari Hotari <lh...@apache.org> ha scritto:

> I updated it to be PIP-205 since there was a previous reference of
> PIP-204. :)
>
> -Lari
>
> On 2022/08/29 12:55:43 Lari Hotari 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
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Lari Hotari <lh...@apache.org>.
I updated it to be PIP-205 since there was a previous reference of PIP-204. :) 

-Lari

On 2022/08/29 12:55:43 Lari Hotari 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
> 

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Michael Marshall <mm...@apache.org>.
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 <wa...@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 <mm...@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 <bo...@gmail.com>
> > wrote:
> > >
> > > Absolutely +1, great initiative
> > >
> > > Nicolò Boschi
> > >
> > >
> > > Il giorno mer 31 ago 2022 alle ore 04:22 guo jiwei <technoboy@apache.org
> > >
> > > ha scritto:
> > >
> > > > +1
> > > >
> > > >
> > > > Regards
> > > > Jiwei Guo (Tboy)
> > > >
> > > >
> > > > On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <no...@gmail.com> wrote:
> > > >
> > > > > +1
> > > > >
> > > > > Best regards,
> > > > > Zixuan
> > > > >
> > > > > Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:
> > > > >
> > > > > > +1
> > > > > >
> > > > > > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <
> > matteo.merli@gmail.com>
> > > > > > wrote:
> > > > > >
> > > > > > > +1
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Matteo Merli
> > > > > > > <ma...@gmail.com>
> > > > > > >
> > > > > > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> > > > > > >
> > > > > >
> > > > >
> > > >
> >

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by tison <wa...@gmail.com>.
> 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 <mm...@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 <bo...@gmail.com>
> wrote:
> >
> > Absolutely +1, great initiative
> >
> > Nicolò Boschi
> >
> >
> > Il giorno mer 31 ago 2022 alle ore 04:22 guo jiwei <technoboy@apache.org
> >
> > ha scritto:
> >
> > > +1
> > >
> > >
> > > Regards
> > > Jiwei Guo (Tboy)
> > >
> > >
> > > On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <no...@gmail.com> wrote:
> > >
> > > > +1
> > > >
> > > > Best regards,
> > > > Zixuan
> > > >
> > > > Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:
> > > >
> > > > > +1
> > > > >
> > > > > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <
> matteo.merli@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > +1
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Matteo Merli
> > > > > > <ma...@gmail.com>
> > > > > >
> > > > > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> > > > > >
> > > > >
> > > >
> > >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Michael Marshall <mm...@apache.org>.
+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 <bo...@gmail.com> wrote:
>
> Absolutely +1, great initiative
>
> Nicolò Boschi
>
>
> Il giorno mer 31 ago 2022 alle ore 04:22 guo jiwei <te...@apache.org>
> ha scritto:
>
> > +1
> >
> >
> > Regards
> > Jiwei Guo (Tboy)
> >
> >
> > On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <no...@gmail.com> wrote:
> >
> > > +1
> > >
> > > Best regards,
> > > Zixuan
> > >
> > > Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:
> > >
> > > > +1
> > > >
> > > > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <ma...@gmail.com>
> > > > wrote:
> > > >
> > > > > +1
> > > > >
> > > > >
> > > > > --
> > > > > Matteo Merli
> > > > > <ma...@gmail.com>
> > > > >
> > > > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> > > > >
> > > >
> > >
> >

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Nicolò Boschi <bo...@gmail.com>.
Absolutely +1, great initiative

Nicolò Boschi


Il giorno mer 31 ago 2022 alle ore 04:22 guo jiwei <te...@apache.org>
ha scritto:

> +1
>
>
> Regards
> Jiwei Guo (Tboy)
>
>
> On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <no...@gmail.com> wrote:
>
> > +1
> >
> > Best regards,
> > Zixuan
> >
> > Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:
> >
> > > +1
> > >
> > > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <ma...@gmail.com>
> > > wrote:
> > >
> > > > +1
> > > >
> > > >
> > > > --
> > > > Matteo Merli
> > > > <ma...@gmail.com>
> > > >
> > > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> > > >
> > >
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by guo jiwei <te...@apache.org>.
+1


Regards
Jiwei Guo (Tboy)


On Wed, Aug 31, 2022 at 10:22 AM Zixuan Liu <no...@gmail.com> wrote:

> +1
>
> Best regards,
> Zixuan
>
> Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:
>
> > +1
> >
> > On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <ma...@gmail.com>
> > wrote:
> >
> > > +1
> > >
> > >
> > > --
> > > Matteo Merli
> > > <ma...@gmail.com>
> > >
> > > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> > >
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Zixuan Liu <no...@gmail.com>.
+1

Best regards,
Zixuan

Joe F <jo...@gmail.com> 于2022年8月31日周三 08:53写道:

> +1
>
> On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <ma...@gmail.com>
> wrote:
>
> > +1
> >
> >
> > --
> > Matteo Merli
> > <ma...@gmail.com>
> >
> > On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
> >
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Joe F <jo...@gmail.com>.
+1

On Tue, Aug 30, 2022 at 9:37 AM Matteo Merli <ma...@gmail.com> wrote:

> +1
>
>
> --
> Matteo Merli
> <ma...@gmail.com>
>
> On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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
>

Re: [DISCUSS] PIP-204: Reactive Java client for Apache Pulsar

Posted by Matteo Merli <ma...@gmail.com>.
+1


--
Matteo Merli
<ma...@gmail.com>

On Mon, Aug 29, 2022 at 5:56 AM Lari Hotari <lh...@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