Мне любопытно, если это абсолютно необходимо, чтобы приложение Spark streaming было изъято изящно, или он рискует вызвать дублирование данных через журнал записи вперед. В приведенном ниже сценарии я описываю последовательность шагов, в которых приемник очереди взаимодействует с очередью, требует подтверждения сообщений.Возможно ли реализовать надежный приемник, который поддерживает негибкое завершение работы?
- Приемник очереди Spark вытаскивает пакет сообщений из очереди.
- Приемник очереди Spark хранит пакет сообщений в журнале записи вперед.
- Приложение Spark прекращается до отправки ack в очередь.
- Приложение искры запускается снова.
- Сообщения в журнале записи вперед обрабатываются через приложение потоковой передачи.
- Приемник очереди Spark вытаскивает пакет сообщений из очереди, которые уже были показаны на шаге 1, потому что они не были подтверждены как полученные.
- ...
ли мое понимание правильно о том, как пользовательские приемники должны быть реализованы, проблемы дублирования, которые приходят с ней, и это нормально требовать корректного завершения работы?