You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2022/08/29 12:27:03 UTC

[GitHub] [pulsar] lhotari opened a new issue, #17335: PIP-204: Reactive Java client for Apache Pulsar

lhotari opened a new issue, #17335:
URL: https://github.com/apache/pulsar/issues/17335

   ### 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
   
   ### API Changes
   
   Establish a Reactive Streams compatible client API for Apache Pulsar. This client will be published in Maven central as a library.
   
   ### Implementation
   
   The Reactive Java client for Apache Pulsar exposes a Reactive Streams compatible Reactive client API for Apache Pulsar that supports asynchronously non-blocking back pressure for producing and consuming messages. 
   
   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.
   
   ### Alternatives
   
   _No response_
   
   ### 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.
   
   
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] github-actions[bot] commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1272712761

   The issue had no activity for 30 days, mark with Stale label.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] tisonkun commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by "tisonkun (via GitHub)" <gi...@apache.org>.
tisonkun commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1504488470

   @hpvd Thanks for bringing this issue up. I agree to close this issue as completed since we even released a few versions of pulsar-client-reactive already :)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] lhotari commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by GitBox <gi...@apache.org>.
lhotari commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1232678919

   > @lhotari Cool! Several comments here:
   > 
   > > The root package name is "org.apache.pulsar.reactive.client".
   > 
   > `org.apache.pulsar.client.reactive`?
   
   thanks for the comments @tisonkun 
   
   I was thinking about that option. However, I intentional proposed `org.apache.pulsar.reactive.client`.
   I was simply thinking that it reads better. For the module and repository name I'd rather have pulsar-reactive-client than pulsar-client-reactive, but since there's an existing naming convention for the client modules, I thought it would be good to follow that.
   For the package name I was thinking that there's no need to make it match the module name exactly. 
   Another reason in the back of my head was to make the package name globally unique. Both are unique, but it felt more unique when using `org.apache.pulsar.reactive.client`.
   What is your concern about the package name?
   
   > 
   > > 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.
   > 
   > Does the test plan include integration with all or part of the framework listed here?
   
   This is an open source project and it's open for contributions. It's possible to make changes after we get things started. The main proposal is about making the decision to start
   
   
   > > 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.
   > 
   > Could you share the links for these statements?
   
   That's not something that typically is expressed in a statement that can be shared by a link. :) What are you specifically interested to know?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] tisonkun commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by GitBox <gi...@apache.org>.
tisonkun commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1232596596

   @lhotari Cool! Several comments here:
   
   > The root package name is "org.apache.pulsar.reactive.client".
   
   `org.apache.pulsar.client.reactive`?
   
   > 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.
   
   Does the test plan include integration with all or part of the framework listed here?
   
   > 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.
   
   Could you share the links for these statements?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] tisonkun commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by GitBox <gi...@apache.org>.
tisonkun commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1232692670

   > What is your concern about the package name?
   
   Yep. I can see the reason that `reactive.client` is more suitable to be globally unique. I'm interested to learn your thoughts on the alternative. It sounds reasonable to me.
   
   > open it for contributions
   
   Agree. A proposal can go with a test plan, I'm trying to ask for the plan you'll cover in this turn.
   
   > What are you specifically interested to know?
   
   I'd expect conversations on issues or a public channel where more contributors show their interests :) Although I support this proposal, I didn't see other users who ask for such a functionality.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] lhotari commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by GitBox <gi...@apache.org>.
lhotari commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1232899781

   > > What are you specifically interested to know?
   > 
   > I'd expect conversations on issues or a public channel where more contributors show their interests :) Although I support this proposal, I didn't see other users who ask for such a functionality.
   
   We have a mailing list thread for this PIP, it's https://lists.apache.org/thread/xkfl5px7qgt5rrxw5pj0g318r6mbdlz1 .
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] tisonkun closed issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by "tisonkun (via GitHub)" <gi...@apache.org>.
tisonkun closed issue #17335: PIP-205: Reactive Java client for Apache Pulsar
URL: https://github.com/apache/pulsar/issues/17335


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [pulsar] hpvd commented on issue #17335: PIP-205: Reactive Java client for Apache Pulsar

Posted by "hpvd (via GitHub)" <gi...@apache.org>.
hpvd commented on issue #17335:
URL: https://github.com/apache/pulsar/issues/17335#issuecomment-1504002479

   if I get it right this can be found in its own repository now:
   https://github.com/apache/pulsar-client-reactive


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@pulsar.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org