Я использую Spring Kafka для взаимодействия с моим экземпляром Kafka. Предположим, что у меня есть одна topi c с, скажем, 2+ разделами.
В тех случаях, когда, например, мое приложение на основе Spring Kafka аварийно завершает работу (или даже перебалансируется), а затем возвращается в оперативный режим и есть сообщения, ожидающие в topi c, в настоящее время я использую стратегию, в которой последние зафиксированные смещения для каждого раздела хранятся во внешнем хранилище, и я затем просматриваю назначение потребителем раздела и затем пытаюсь найти это смещение для возобновления обработки.
(Это основано на стратегии, о которой я читал в книге О'Рейли.)
Есть ли лучший способ справиться с этой ситуацией, чтобы реализовать семантику «ровно один раз» и не пропустить ни одного ожидающего сообщения? Или есть лучший / более идиоматический c способ с Spring Kafka для решения этой ситуации?
Заранее спасибо.