Семантика 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
; управление жизненным циклом через хуки транзакции.