Hi, Xiangying. Have you ever considered the `isAckReceiptEnabled` param?

Thanks
ZhangJian He


On Wed, Mar 27, 2024 at 3:33 PM Xiangying Meng <xiangy...@apache.org> wrote:

> Dear Pulsar Community,
>
> I would like to initiate a discussion regarding the optimization of
> the acktimeout mechanism on the client side. As we all know, the
> Pulsar consumer has a configuration for ack timeout that automatically
> redelivers unacknowledged messages after a certain period. The
> workflow is approximately as follows:
>
> 1. Record a message when it is received.
> 2. Remove the message from the record when the consumer begins to
> acknowledge it.
> 3. A timed task checks whether the messages from the record have
> reached the ack timeout and triggers redelivery for those messages.
>
> This workflow has a potential shortcoming: it does not wait for the
> ack response before removing the message from the record. If an ack
> request is lost during transmission to the broker - due to issues with
> proxy processing or buffer overflow after reaching the broker, for
> instance - then the ack timeout will not be resent, leading to an ack
> hole. While this situation is quite extreme and the likelihood of
> occurrence is extremely low, it is nonetheless a possibility. Another,
> more common scenario is when the broker fails to process or persist
> the ack request.
>
> In such cases, users who are highly sensitive to ack holes may prefer
> the message to be removed only after receiving the ack response.
> Perhaps we could add a parameter to the acktimeout to determine
> whether to wait for the ack response before removing the message.
>
> I am interested in hearing your thoughts on this issue and look
> forward to your responses and valuable suggestions.
>
> Best Regards,
> Xiangying
>

Reply via email to