Apache Pulsar Consumer.acknowledgeAsync()故障应如何处理?

时间:2018-12-10 11:16:30

标签: java message-queue apache-pulsar

我正在使用Consumer.acknowledgeAsync()来确认Java服务中的消息,并且想知道如果确认失败了该怎么办?重试用尽后,我应该重试该操作几次并丢弃我的消费者吗?

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

1 个答案:

答案 0 :(得分:3)

通常,如果未成功确认消息,则在ackTimeout之后,该消息将再次从代理重新传递给使用者。 因此,在大多数情况下,这里不需要重试。

也许这样的处理就足够了:

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