Skip to main content
Each iii module that needs persistence or distribution uses an adapter — a pluggable backend that implements a fixed interface. Swap adapters in iii-config.yaml without touching application code.

Pattern

Every adapter entry has two fields:
  • class — the full adapter path
  • config — adapter-specific config (omit if not needed)

Adapter Reference

Queue

modules::queue::BuiltinQueueAdapter

Default. In-process only with retries and DLQ — does not share messages across engine instances.

modules::queue::RedisAdapter

modules::queue::RabbitMQAdapter

For retry behavior, dead-letter queues, and full config reference, see the Queue module.

State

modules::state::adapters::KvStore

Default. Supports in-memory or file-based persistence.

modules::state::adapters::RedisAdapter

modules::state::adapters::Bridge

Forwards state operations to a remote iii Engine.

Stream

modules::stream::adapters::KvStore

Default. In-process only.

modules::stream::adapters::RedisAdapter


Cron

modules::cron::KvCronAdapter

Default. Process-local locks — jobs may run on every instance in multi-instance deployments.

modules::cron::RedisCronAdapter

Distributed locking via Redis — ensures each job runs only once across all instances.

PubSub

modules::pubsub::LocalAdapter

Default. In-process broadcast — subscribers must be in the same engine process.

modules::pubsub::RedisAdapter


Choosing an Adapter

Use ${VAR:default} syntax in iii-config.yaml to switch adapters per environment without changing the file: