Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Устройство

Ядро не знает ни одного брокера: крейт брокера реализует его трейты и хранит все настройки своего брокера.

Сервис, ядро, не зависящее от брокера, и крейты брокеров, которые реализуют его трейтыВаш сервисruststreamКрейты брокеров#[subscriber]обработчики#[ruststream::app]сборщикрантайм: маршрутизация,диспетчеризация, подтверждениекодеки: JSON, CBOR,MessagePack или никакой;выбор при компиляциифичи: брокер в памяти,AsyncAPI, метрики,OpenTelemetry, тестыBroker, Subscriber,Publisher, источники,политикисовместимость: пакеты,транзакции, запроси ответ, перемоткаruststream-natsсубъекты, потоки,политики, настройки,шаги монтированияruststream-rdkafkaтопики, группы,политики, настройки,шаги монтированияasync-natsrdkafka
Схема текстом
  1. Ваш сервис: #[subscriber] обработчики; #[ruststream::app] сборщик
  2. ruststream: рантайм: маршрутизация, диспетчеризация, подтверждение; кодеки: JSON, CBOR, MessagePack или никакой; выбор при компиляции; фичи: брокер в памяти, AsyncAPI, метрики, OpenTelemetry, тесты; Broker, Subscriber, Publisher, источники, политики; совместимость: пакеты, транзакции, запрос и ответ, перемотка
  3. Крейты брокеров: ruststream-nats субъекты, потоки, политики, настройки, шаги монтирования; ruststream-rdkafka топики, группы, политики, настройки, шаги монтирования
  4. #[subscriber] обработчики → рантайм: маршрутизация, диспетчеризация, подтверждение: монтируются
  5. ruststream-nats субъекты, потоки, политики, настройки, шаги монтирования → Broker, Subscriber, Publisher, источники, политики: реализует
  6. ruststream-rdkafka топики, группы, политики, настройки, шаги монтирования → совместимость: пакеты, транзакции, запрос и ответ, перемотка: реализует
  7. ruststream-nats субъекты, потоки, политики, настройки, шаги монтирования → async-nats: обёртывает
  8. ruststream-rdkafka топики, группы, политики, настройки, шаги монтирования → rdkafka: обёртывает

Ядро не зависит ни от одного клиента брокера. Обязательных трейтов три: жизненный цикл соединения, подписчик в виде Stream доставок и издатель. Пакеты, транзакции, запрос с ответом, перемотка и значения, которые доставка уже несёт, оформлены трейтами совместимости. Брокер реализует их, только если их умеет его клиент.

Словарь брокера живёт в его крейте. Там описаны формы подписки, политики издателей, настройки отдельного сообщения и шаги монтирования, которые читают настройки цепочки. В ядре нет ни настроек конкретного брокера, ни значений по умолчанию для них.

Кодек - это тип: кодек, названный при монтировании, или кодек по умолчанию, который выбирает включённая фича. Без фичи кодека значения по умолчанию нет, и монтирование, которому кодек нужен, не компилируется.

Всё, что лежит за трейтами и рантаймом, - фичи одного крейта: брокер в памяти, AsyncAPI, метрики, журналирование, OpenTelemetry, тестирование и командная строка. Фичи только добавляют возможности и не меняют поведение друг друга.