shove 0.11.5

Async tasks via pubsub on steroids. Comes with built-in support for complex queue configurations, audit logs, autoscaling consumer groups and more.
Documentation
# Getting Started

You can run a real `shove` publisher and consumer in 60 seconds against the **in-process backend** — no Docker, no AWS credentials, no config. This page is a copy-paste walkthrough.

## Add the dependency

```sh
cargo add shove --features inmemory
cargo add tokio --features full
cargo add serde --features derive
cargo add tracing-subscriber
cargo add tokio-util --features rt
```

## Define a topic

A topic binds a Rust message type to a queue topology. The `define_topic!` macro is the fast path; this example shows the manual `Topic` impl for clarity.

```rust
// [!include ~/examples/inmemory/basic.rs:topic]
```

Reference: [Topics & Topology](/concepts/topics).

## Write a handler

```rust
// [!include ~/examples/inmemory/basic.rs:handler]
```

The handler returns an [`Outcome`](/concepts/outcomes). `Ack` removes the message from the queue.

## Wire it up

```rust
// [!include ~/examples/inmemory/basic.rs:main]
```

This connects to the in-process broker, declares the topology, registers a one-worker consumer group, publishes five messages, and exits cleanly when all five are processed.

## Run it

```sh
cargo run --example inmemory_basic --features inmemory
```

Expected output:

```text
received #0: hello 0
received #1: hello 1
received #2: hello 2
received #3: hello 3
received #4: hello 4
```

## What's next

- **[Core concepts](/concepts/topics)** — what `Topic`, `Outcome`, and `Broker<B>` mean.
- **[Pick a real backend](/backends/choosing)** — RabbitMQ, SNS+SQS, NATS, Kafka, or Redis/Valkey. Same handler, swap one marker.
- **[Sequenced topics](/guides/sequenced)** — strict per-key ordering when message order matters.
- **[Audit logging](/guides/audit)** — wrap any handler with structured per-delivery records.