pulsar-dotpulsar
pulsar-dotpulsar copied to clipboard
Support - Consumer.NegativeAcknowledge
NegativeAcknowledge provides a nice way to shape error handling when messages cannot be processed and you want to do so at a later time with a given timeout:
Prefer negative acknowledgements over acknowledgement timeout. Negative acknowledgement controls the re-delivery of individual messages with more precision, and avoids invalid redeliveries when the message processing time exceeds the acknowledgement timeout.
From what I can tell both the Java and C++ clients use a client sided tracker to keep track of negatively acknowledged messages add by the Consumer. negativeAcknowledge in a NegativeAcksTracker. The tracker is responsible for calling the RedeliverUnacknowledgedMessages consumer command, with those message ids that exceed their respective timeout.
I see there is some interaction with another mechanism required to track unacked messages but this only exists when the client actually sets an AckTimeout (request in #46)
This sounds related to the "reconsumeLater" functionality. Not sure how they differ. If you are up for creating a PR, then I will be happy to review it.
@blankensteiner Is this something we are considering in the future? Would love to utilize this functionality, it's already in F#'s version, but just wondering if we can expect this in the near future, it's just nice for automated retry or reconsuming upon an exception occurring or other.
Hi @alexcherka @dionjansen has created a PR for it and @RobertIndie is reviewing it. Once they are finished I can review and merge it :-)
Hey @blankensteiner Just checking if we have an update for this? Been more than a year lol...
Hi @alexcherka Doesn't seem like the PR is ready for review. I can't merge and release what I can't review :-)