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

ruststream-gcp-pubsub

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

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

ruststream-gcp-pubsub запускает сервис RustStream на Google Cloud Pub/Sub поверх официального клиента google-cloud-pubsub.

Поток сообщений, который читает обработчик, - это подписка в режиме streaming pull. Подтверждение нативное и отдельное для каждого сообщения. На подписке exactly-once ack идёт в подтверждаемой форме. Ключ упорядочивания - это ключ партиционирования фреймворка.

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

Крейт опубликован на crates.io и следует линейке ruststream 0.7. Его MSRV - 1.95, и его задаёт ядро фреймворка.

Сервис на Pub/Sub вы собираете в функции приложения:

crates/ruststream-gcp-pubsub/examples/pubsub_service.rs
#[ruststream::app]
fn app() -> impl App {
    RustStream::new(AppInfo::new("orders", "0.1.0")).with_broker(
        PubSubBroker::new("my-project").emulator("localhost:8085"),
        |b| {
            b.include(handle);
        },
    )
}

Что даёт крейт

Один дескриптор подписки несёт все настройки подписки: управление потоком, на сколько продлевается срок подтверждения, сколько ждёт неполный пакет и как долго одна доставка может оставаться неурегулированной. Предел попыток и тема dead-letter, названные в точке монтирования, становятся собственной политикой dead-letter этой подписки, поэтому сервис не публикует копий для повторной доставки. Публикация добавляет одну настройку на сообщение - ключ упорядочивания, - и назвать его может место вызова, заголовок с ключом партиционирования или точка монтирования. С возможностью testing тест запускает то же приложение, что и main: PubSubBroker подключается внутрипроцессно, без сервера.

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

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

Этот сайт - входная страница брокера Pub/Sub. Всё, что даёт сам брокер, лежит на docs.rs, а фреймворк описан в своём крейте и на сайте RustStream.