-
Notifications
You must be signed in to change notification settings - Fork 13
Reactive IPC Functional Scope #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
tldr; A user should be able to use only Reactive IPC to run a server or client. My perspective is that one should be able to use Reactive IPC directly to create and run a client or server. Reactive IPC should not just be an SPI that is useless by itself. In other words, without further abstractions on top I should be able to use Reactive IPC APIs, transports and Reactive Streams callbacks. For example, I should be able to do the following:
On the client side I would similarly expect to be able to:
Layers on top are to expose different stream compositions approaches (such as RxJava), usability opinions, etc. |
For example, I want to be able to do similar to what RxNetty offers (ignoring the API design, just the functionality): ReactiveIPC.createHttpServer(8999, (req, resp) -> resp.writeStringAndFlush("Hello")).start(); Further opinions would all layer on top of these basic capabilities. For example, Netlix Ribbon and Karyon would hide all of this from users, as would Spring Boot and Spring Web, all of which would have different opinions of how to start servers or execute requests. |
I think writeAndFlush should map on the Reactive Stream contract directly: On the input side (registering a Subscriber to a request Publisher): On the output side: |
To get the discussion going, the initial commit I pushed adds just two abstractions to represent TCP communication: I did not implement the connection-level I also added a |
Thanks for submitting code ... will review and then discuss further. |
Are you suggesting
If yes, then this isn't addressing all the usescases. This would mean that all writes are buffered in the channel outbound buffer, till the stream completes. For infinite streams, never, for slow streams, causes buffer bloat. We would atleast need a semantic like:
which gets a feedback from a @jbrisbin I have questions about the implementation and let me create separate issues to have a focussed discussion on those different points. |
Discussion to establish scope of client/server/protocol functionality for Reactive IPC.
The text was updated successfully, but these errors were encountered: