В настоящее время я узнаю больше о Kafka Producer. Меня немного озадачил следующий абзац из документации:
Сообщения, написанные лидеру раздела, не могут быть немедленно прочитаны потребителями, независимо от настроек подтверждения производителя. Когда все синхронизированные реплики подтвердили запись, сообщение считается зафиксированным, что делает его доступным для чтения. Это гарантирует, что сообщения не могут быть потеряны из-за сбоя брокера после того, как они уже были прочитаны. Обратите внимание, что это означает, что сообщения, которые были подтверждены только лидером (то есть, acks = 1), могут быть потеряны, если лидер раздела выходит из строя до того, как реплики скопируют сообщение. Тем не менее на практике это часто является разумным компромиссом для обеспечения долговечности в большинстве случаев, при этом не слишком сильно влияя на пропускную способность.
Я интерпретирую это так: сообщения могут быть потеряны во время синхронизации между ведущим и реплицированным брокерами, т.е. сообщения не будут зафиксированы, если они не были успешно реплицированы.
Я не понимаю, как (например) приложение Java может защитить от этой потери сообщения. Получает ли он разные подтверждения между «единственным лидером» и полной репликацией?
на практике это часто бывает разумным компромиссом
Как так? Предполагают ли они, что вам следует регистрировать неудачные сообщения и заново ставить их в очередь вручную? Или как это работает?