Семантика Topic Reader/Writer
Reader
- Потоковая модель: сервер шлёт пачки сообщений по активным partition‑сессиям.
read({ limit, waitMs, signal })— асинхронный итератор батчей;limit— максимум сообщений за вызов итерации (по умолчанию нет лимита).waitMs— максимум ожидания данных до возврата пустого батча.signal— отмена ожидания/чтения.
- Коммиты:
commit(batch|msg)— подтверждает обработку на стороне сервера. - Hooks:
onPartitionSessionStart(session, committedOffset, { start, end })— можно сдвинутьreadOffset/commitOffset.onPartitionSessionStop(session, committedOffset)— финализация/коммиты.onCommittedOffset(session, committedOffset)— уведомления об ack.
Буферизация:
- Внутренний буфер ограничивается
maxBufferBytes. codecMapуправляет распаковкой полезной нагрузки.
Writer
write(payload)— кладёт сообщение в буфер; возвращаетseqNo.flush()— отправляет буфер на сервер; возвращает последнийseqNo.onAck(seqNo, status)— уведомления о подтверждении записи.- Ограничения:
maxBufferBytes,maxInflightCount,flushIntervalMs. - Повторные попытки соединения на уровне stream с настраиваемой стратегией (
retryConfig).
Транзакции
- TxReader: отслеживает прочитанные оффсеты и отправляет
updateOffsetsInTransactionна коммите транзакции. - TxWriter: дожидается
flushперед коммитом (черезtx.onCommit). - Использование без
using; управление жизненным циклом через хуки транзакции.