2

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

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

4

1 回答 1

3

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

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

consumer.acknowledgeAsync(msgId)
    .thenAccept(consumer -> successHandlerMethod())
    .exceptionally(exception -> failHandlerMethod());
于 2018-12-10T12:23:20.443 回答