Skip to content
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

Add multi request to KafkaRequestReply #2761

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

Malandril
Copy link
Contributor

Purpose

This PR adds a new request type to the KafkaRequestReply so that we can receive multiple replies to a request.
This can be useful when you want to send a request, for which multiple consumer groups can answer, or a some service needs to answer with multiple messages.
That was not supported with the Uni<Rep> request.

Implementation

This is a first idea to add the feature, in which the KafkaRequestReplyImpl is modified to use a Multi as a base for all operations instead of the Uni.
If you think this should be a separate, class or if you have any other idea, do not hesitate.

This adds two new methods requestMulti that returns a Multi<Rep>.
I had no idea, for the method names, and we can discuss a better one.
The reply.timeout is applied between each reply, and the ReplyFailureHandler is called for each reply, so one failure on a reply will fail the whole operation.
I didn't write the doc yet.

If you have any input feel free.

@ozangunalp
Copy link
Collaborator

That's a very interesting idea. I'll look later today!

@ozangunalp
Copy link
Collaborator

@Malandril Thanks for the tests as well!
I've pushed small changes, and exposed a way to complete a pending request.

The upstream consumer request handling is slightly different, but I am unsure of the impact. It was designed to be able to pause the consumer when there aren't any pending requests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants