Как обрабатывать сбой Apache Pulsar Consumer.acknowledgeAsync ()? - PullRequest
0 голосов
/ 10 декабря 2018

Я использую Consumer.acknowledgeAsync () для подтверждения сообщений в моем Java-сервисе, и мне было интересно, что произойдет в случае сбоя подтверждения?Должен ли я повторить операцию несколько раз и отказаться от своего потребителя, когда повторные попытки исчерпаны?

Я считаю количество сообщений, обрабатываемых для управления потоком, чтобы ограничить использование памяти.

1 Ответ

0 голосов
/ 10 декабря 2018

Обычно, если сообщение не было успешно подтверждено, после ackTimeout сообщение будет снова доставлено от брокера к потребителю.Так что здесь, в большинстве случаев, нет необходимости повторять попытку.

может быть, некоторой обработки, подобной этой, достаточно:

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