NATS Stream
Source:: https://docs.nats.io/nats-concepts/jetstream/streams

Стрим настраивается на определенные темы и персистентно сохраняет полученные сообщения согласно задданым при его создании настройкам.
Можно публиковать сообщения просто отправляя их в заданную тему, но можно и использовать особые JetStream API которое обеспечивает ответ о успешном сохранении.
Основные параметры для создания Stream
- Name - уникальное имя стрима (обязательный параметр).
- Subjects — список subject, сообщения из которых будет сохранять стрим; если не указать, по умолчанию используется имя стрима.
- Storage — тип хранилища:
File(по умолчанию) илиMemory. - Replicas — количество реплик для отказоустойчивости.
- Retention — политика хранения сообщений:
LimitsPolicy,WorkQueuePolicyилиInterestPolicy. - Discard - поведение при достижении лимитов:
DiscardOld(удалять старые) илиDiscardNew/DiscardNewPerSubject(отклонять новые сообщения). - Лимиты:
MaxMsgs— максимум сообщений в стримеMaxBytes— максимум по размеру данныхMaxAge— максимальный возраст сообщенийMaxMsgSizeи при необходимостиMaxMsgsPerSubject.
- Placement - размещение данных: выбор кластера и/или тегов
server_tags(регион, зона доступности и т.п.). - NATS Stream DuplicateWindow - окно дедупликации сообщений по заголовку
Nats-Msg-Id. - NATS Stream RePublish