Closed yordis closed 2 years ago
@yordis just wondering what kind of failure do you have in mind?
Broadway.Message.failed(message, "reason")
handle_message
was runningI suppose you mean all the cases but I think if we break it down, we can produce a better doc!
So my understanding:
One thing to keep in mind about the acking is that ack is sent after batch of messages are processed. Each GenStage consumer gets 5 tasks(as default value) and after all 5 are processed(with or without error) the last offset is going to be committed to the Kafka broker.
@slashmili right, I was referring to the 3 cases you describe.
Ideally, the documentation could showcase how to do Dead-Letter-Queues or a strategy to re-consume the message in case of the processor fails when you have to guarantee at-least-once successful processing where it is critical to make sure the message was processed.
If we can validated my understandings, we can write them down in Handling failed messages section.
the documentation could showcase how to do Dead-Letter-Queues or a strategy to re-consume the message
This is complicated subject. While we can show that on handle_error
, you could put the message in a DLQ(or another topic). Showing how to re-consume is highly depends on the application and nature of failure. It also requires the app keeping track of amount of retries and stop retrying after X times....
I think the first step is to create a PR to add a section to explain the failure scenarios and consequences.
@slashmili yeah, I hear you, I think they are endless use cases on how we could do it, but there are also a few basic ways we could showcase since they are common enough, like DLQs after X failures.
Ideally, what is the basic example of doing at least one-processing guarantee without losing any message?
This is related to the discussion in #30. As you can see, there are many different approaches people may take. Documenting different strategies sound like a good call. :+1: Closing in favor of #30.
Hey there, in the Broadway's documentation says the following https://hexdocs.pm/broadway/Broadway.html#module-acknowledgements-and-failures
As well as
So I am wondering how this producer deals with the failure.
Is there an opportunity to document the topic?