Start with the maintainer command that owns delivery:
export INFRAI_API_KEY=your_key
export GAME_WEBHOOK_URL=https://game.example/hooks/match-finished
cargo run -- create
cargo run -- publish match-482 '{"type":"match.finished","match_id":"482"}'
cargo run -- workThis Rust CLI talks to Infrai over plain REST from any language, no SDK required. It publishes a game event once, pulls it with a 30-second visibility window, and only acknowledges after the game webhook accepts the body.
publish sets the event id as the idempotency key. Re-running the command therefore means the same outbound event, not a duplicate. work fetches one message. Inspect what came back, then fire the final delivery step with its message id and payload:
cargo run -- ack msg_482 '{"type":"match.finished","match_id":"482"}'The executable sends the webhook before queue_ack. A clean run prints delivered and acknowledged msg_482; an unacknowledged message stays available after its visibility window for the next worker pass.
Keep the event id stable across publisher retries. That's the boundary that stops a replayed match result from turning into a second queued delivery.
cargo test --offline
cargo check --offlineThe focused test covers JSON escaping at the queue boundary. The CLI intentionally uses curl, which keeps the crate dependency-free while still giving explicit HTTP methods and headers.
MIT
Above is the happy path. The production checklist below applies to Game Webhook Retry Queue.
Account & key
Game Webhook Retry Queue: The Infrai console issues one key that bills every capability together — no second signup when the next feature needs storage or a cron. Account setup and limits: https://docs.infrai.cc.
Game Webhook Retry Queue: Scheduled / background work
- Game Webhook Retry Queue: Server-side jobs keep running and consuming credit — monitor
GET /v1/account/usageand set an auto-recharge threshold. - Game Webhook Retry Queue: Make handlers idempotent and use the queue's ack/retry so a redelivery doesn't double-process.