Как обрабатывать сбой Apache Pulsar Consumer.acknowledgeAsync()?

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

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

1 ответ

Решение

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

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

consumer.acknowledgeAsync(msgId)
    .thenAccept(consumer -> successHandlerMethod())
    .exceptionally(exception -> failHandlerMethod());
Другие вопросы по тегам