Значение по умолчанию acks
для производителя - 1
. Это означает, что производитель ожидает подтверждения только от реплики лидера. Если лидер умрет сразу после подтверждения, сообщение не будет доставлено.
Должны ли данные быть немедленно доступны для потребителей? Да, в общем, должно быть очень небольшое отставание по умолчанию, оно должно быть эффективно в диапазоне миллисекунд по умолчанию и без нагрузки.
Если вы хотите убедиться, что сообщение не может быть потеряно, вам нужно настроить производителя на «acks = all» в дополнение к min.insync.replicas = 2. Это позволит убедиться, что все синхронизированные реплики подтверждают сообщение, и как минимум 2 узла. Таким образом, вы все еще можете потерять один узел и все будет в порядке. Потеряйте 2 узла, и вы не сможете отправлять, но даже тогда сообщения не будут потеряны.