我正在使用Consumer.acknowledgeAsync()来识别我的Java服务中的消息,并想知道如果ack失败会发生什么?我应该重试几次操作并在重试耗尽时丢弃我的消费者吗?
我正在计算为流量控制处理的消息数量,以限制内存使用量 .
通常,如果消息未成功激活,则在ackTimeout之后,消息将再次从代理重新传递给消费者 . 所以在这里,大多数情况下,它不需要重试 .
也许这样处理就足够了:
consumer.acknowledgeAsync(msgId) .thenAccept(consumer -> successHandlerMethod()) .exceptionally(exception -> failHandlerMethod());
1 回答
通常,如果消息未成功激活,则在ackTimeout之后,消息将再次从代理重新传递给消费者 . 所以在这里,大多数情况下,它不需要重试 .
也许这样处理就足够了: