首页 文章

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

提问于
浏览
2

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

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

1 回答

  • 3

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

    也许这样处理就足够了:

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

相关问题