Перейти к содержанию

ruststream-nats

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

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

ruststream-nats подписывает сервис RustStream на субъекты NATS и публикует в них сообщения. Обработчик привязывается к субъекту Core NATS или к консьюмеру JetStream. NATS сам сопоставляет ответы с запросами, поэтому сервис может отправить запрос и дождаться ответа. Публикация в JetStream заявляет, чего она ждёт от стрима, и стрим отвергает её, когда ожидание не выполнено.

С фичей testing тест запускает рабочее приложение сервиса: NatsBroker работает внутри процесса, без сервера NATS, или подключается к живому серверу.

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

[dev-dependencies]
ruststream-nats = { version = "0.7", features = ["testing"] }

Сервис монтирует обработчики на NatsBroker:

crates/ruststream-nats/examples/nats_core.rs
use ruststream_nats::prelude::*;
use serde::Deserialize;

#[derive(Debug, Deserialize)]
struct Order {
    id: u64,
}

#[subscriber("orders.created")]
async fn handle(order: &Order) -> HandlerOutcome {
    println!("got order {}", order.id);
    HandlerOutcome::ack()
}

#[ruststream::app]
fn app() -> impl App {
    RustStream::new(AppInfo::new("orders", "0.1.0")).with_broker(
        NatsBroker::new("nats://localhost:4222"),
        |b| {
            b.include(handle);
        },
    )
}

Что умеет крейт

Справочник крейта - учебник по всему этому, и каждая тема в нём отдельный раздел:

Куда идти дальше

Как этот сайт связан с документацией RustStream

С этой страницы NATS начинается, а из чего он состоит - в справочнике крейта. Сам фреймворк описан вместе с его крейтом, а входные страницы лежат на сайте RustStream.