-
Notifications
You must be signed in to change notification settings - Fork 3.6k
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
[Go Client] - Add ability to send an atomic batch #3388
Comments
@imaramos
The ordering will not be lost because the client library will internally resend all the messages from the failure point. You might see duplicates (unless you enabled deduplication feature) but you'll not get ordering violation when pipelining multiple outstanding messages.
We already have that method in Java and C++. We just have to expose that in Python and Go wrapper still. Eg: |
@merlimat Even the duplication could be a problem, the prefered behaviour should be send everything or send nothing making it atomic and still achieving a good throughput without loosing the control over the sent messages. Dont you agree? |
how about batch message ack in consumer? |
@tuan6956 I didnt understand, can you detail please? |
it mean that can i batch acknowledge message? |
@tuan6956 Sorry I thought you were giving a suggestion to my problem. You can achieve that with cumulative ack I assume, at least in the exclusive subscription. |
@merlimat @wolfstudy This solves the issue regarding what I have described before? "I dont know if it solves the problem since in concurrent requests, one could flush the messages from the other." |
Is your feature request related to a problem? Please describe.
In this moment we can't produce/send an atomic batch throught de client.
Currently the producer batching is a buffer that is flushed according with batching configs. The problem is that we can loose the messages order, if some fails.
Describe the solution you'd like
I would like to have a method to send an atomic batch.
Describe alternatives you've considered
An alternative could be adding a flush method that gives more control to the client, having the ability to flush the buffer when desired. I dont know if it solves the problem since in concurrent requests, one could flush the messages from the other.
The text was updated successfully, but these errors were encountered: