Expand description
NATS JetStream QueueBackend for fleet-scale deployments (Mode 2 remote / multi-host).
When to use: broker-backed fleets with NATS JetStream (KV and/or workqueue). Not a
boson facade feature — depend on this crate directly. Mode 2 workers need unique
worker_id and lease_ttl_secs > 0.
Getting started:
Mode 2.
Full Compose / KV vs WorkQueue / env: crate README.
Fleet URL precedence: BOSON_NATS_POOL_ROUTING over BOSON_NATS_URLS
(see connect_fleet_from_env).
§Mode 2 — Enqueue binary
Shared NATS with the worker. No claim loop in this process:
use std::sync::Arc;
use boson_backend_nats::NatsQueueBackend;
use boson_core::JsonExecutionContextFactory;
use boson_runtime::{configure, Boson};
let url = std::env::var("BOSON_NATS_URL")
.unwrap_or_else(|_| "nats://127.0.0.1:4222".into());
let backend = NatsQueueBackend::connect(&url).await?;
let boson = Boson::builder()
.queue_backend(Arc::new(backend))
.execution_context_factory(JsonExecutionContextFactory)
.auto_registry()
.without_worker()
.build()?;
configure(boson);
// MyTask::send_with(...).await?;Also connect_auto / connect_fleet_from_env with the same without_worker + configure
pattern.
§Mode 2 — Worker binary
Same NATS URL / fleet, unique worker_id, and lease_ttl_secs > 0:
use std::sync::Arc;
use boson_backend_nats::NatsQueueBackend;
use boson_core::JsonExecutionContextFactory;
use boson_runtime::Boson;
let url = std::env::var("BOSON_NATS_URL")
.unwrap_or_else(|_| "nats://127.0.0.1:4222".into());
let backend = NatsQueueBackend::connect(&url).await?;
let _boson = Boson::builder()
.queue_backend(Arc::new(backend))
.execution_context_factory(JsonExecutionContextFactory)
.worker_id(std::env::var("BOSON_WORKER_ID").unwrap_or_else(|_| "worker-1".into()))
.lease_ttl_secs(30)
.auto_registry()
.build()?;Other Mode 2 backends:
SQLite,
Postgres,
Redis.
Custom adapters: How to implement on QueueBackend.
Modules§
- keys
- Key paths for
JetStreamKV (mirrors Redis layout).
Structs§
- Nats
Enqueue Config - Resolved enqueue pipeline settings.
- Nats
Queue Backend NATSJetStreamKV queue backend.- Nats
Work Queue Backend NATSJetStreamWorkQueuebackend (stream ready queue + KV job bodies).
Enums§
- Enqueue
Mode - How enqueue writes job data to
JetStream.
Functions§
- connect_
auto - Connect KV or
WorkQueuebackend based onBOSON_NATS_QUEUE_MODE. - connect_
fleet_ from_ env - Connect one
WorkQueuebackend per fleet URL. - install_
default_ nats_ backend - Install default
NATSbackend on global router (tests).