我正在使用Consumer.acknowledgeAsync()来确认Java服务中的消息,并且想知道如果确认失败了该怎么办?重试用尽后,我应该重试该操作几次并丢弃我的消费者吗?
我正在计算为流控制以限制内存使用而处理的消息数。
答案 0 :(得分:3)
通常,如果未成功确认消息,则在ackTimeout之后,该消息将再次从代理重新传递给使用者。 因此,在大多数情况下,这里不需要重试。
也许这样的处理就足够了:
consumer.acknowledgeAsync(msgId)
.thenAccept(consumer -> successHandlerMethod())
.exceptionally(exception -> failHandlerMethod());