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