Back to questions
Senior
4
Вы читаете события пачками (batch) и пишете в ClickHouse батчами. Как это работает с ACK — когда даёте подтверждение?
Companies where asked
А7
Answer from AI
sobes.tech AI
При чтении и записи данных батчами (batch) в системе с подтверждением (ACK) важно правильно управлять моментом подтверждения, чтобы не потерять данные и не обработать их повторно.
Обычно подтверждение (ACK) даётся после успешной записи всего батча в ClickHouse. То есть:
- Считаем батч событий из источника.
- Пишем батч в ClickHouse.
- Если запись прошла успешно, отправляем ACK для этого батча.
Если запись не удалась, ACK не отправляем, и батч будет прочитан повторно (в зависимости от механизма очереди).
Такой подход гарантирует, что данные не потеряются и не будут подтверждены до фактической записи.
Примерно так:
batch := readBatch()
err := writeBatchToClickHouse(batch)
if err == nil {
sendACK(batch)
} else {
// логируем ошибку, возможно, повторяем попытку
}