如何处理Apache Pulsar Consumer.acknowledgeAsync()失败?

我正在使用Consumer.acknowledgeAsync()来识别我的Java服务中的消息,并想知道如果ack失败会发生什么?我应该重试几次操作并在重试耗尽时丢弃我的消费者吗?

我正在计算为流量控制处理的消息数量,以限制内存使用量 .

回答(1)

2 years ago

通常,如果消息未成功激活,则在ackTimeout之后,消息将再次从代理重新传递给消费者 . 所以在这里,大多数情况下,它不需要重试 .

也许这样处理就足够了:

consumer.acknowledgeAsync(msgId)
    .thenAccept(consumer -> successHandlerMethod())
    .exceptionally(exception -> failHandlerMethod());