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

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

Установка

RustStream поставляется одним крейтом ruststream, а всё необязательное в нём включается аддитивными фичами cargo. Добавьте крейт в Cargo.toml:

[dependencies]
ruststream = { version = "0.7", features = ["macros", "memory", "json"] }
serde = { version = "1", features = ["derive"] }

serde - прямая зависимость сервиса, потому что типы сообщений выводят Deserialize и Serialize.

Редакция и MSRV

Нужны редакция 2024 и Rust 1.95 или новее. Укажите edition = "2024" в своём Cargo.toml. Адаптации библиотеки брокера может понадобиться более свежий Rust, если его требует клиентская библиотека. Точная граница записана в поле rust-version этой адаптации.

Фичи​

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

ФичаЗависимостиЧто даёт
json (по умолчанию)serde_jsonJsonCodec
msgpackrmp-serdeMsgpackCodec
cborciboriumCborCodec
memory-MemoryBroker, эталонный in-memory брокер
macrosruststream-macros#[subscriber], #[ruststream::app] и derive-макросы (Outgoing, OutSlot, OutMessages, Deserialized, Serialized, FromRef, MessageInfo)
asyncapischemars, serde_norwayгенерация AsyncAPI и HTML-просмотрщик
metricsprometheusmiddleware и экспортёр Prometheus
loggingtracing-subscriberruststream::logging, цветной консольный логгер (Логирование)
otelopentelemetry, opentelemetry-otlpэкспорт трасс и метрик по OTLP и передача trace-context по W3C (OpenTelemetry)
testinginventoryTestApp и построители утверждений (Тестирование)
conformanceinventoryобвязка conformance для авторов адаптаций библиотек брокеров
cliclap, anyhowбинарник ruststream

В сервисе можно включить сразу несколько кодеков (см. Кодеки). Чтобы убрать встроенный JSON-кодек (например, в адаптации библиотеки брокера, которой нужны только трейты и рантайм), отключите фичи по умолчанию:

[dependencies]
ruststream = { version = "0.7", default-features = false }

CLI​

Фича cli добавляет бинарник ruststream. Он запускает cargo с подкомандами фреймворка: run и asyncapi gen. Установка и команды описаны в модуле runtime::cli.

Новый проект создаётся из шаблона командой cargo generate, это показано в быстром старте.

Конкретные брокеры​

Брокер memory входит в ядро. Он работает внутри вашего процесса, поэтому ему не нужны ни сервер, ни дополнительные зависимости.

Чтобы подключиться к внешнему брокеру очереди, добавьте адаптацию его клиентской библиотеки. Например, для NATS:

[dependencies]
ruststream-nats = "0.7"

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