iii-config.yaml without touching application code.
Pattern
class— the full adapter pathconfig— adapter-specific config (omit if not needed)
Adapter Reference
Queue
| Adapter | Class | External dependency |
|---|---|---|
| Built-in | modules::queue::BuiltinQueueAdapter | None |
| Redis | modules::queue::RedisAdapter | Redis |
| RabbitMQ | modules::queue::RabbitMQAdapter | RabbitMQ |
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
| Adapter | Class | External dependency |
|---|---|---|
| KV Store | modules::state::adapters::KvStore | None |
| Redis | modules::state::adapters::RedisAdapter | Redis |
| Bridge | modules::state::adapters::Bridge | Remote iii Engine |
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
| Adapter | Class | External dependency |
|---|---|---|
| KV Store | modules::stream::adapters::KvStore | None |
| Redis | modules::stream::adapters::RedisAdapter | Redis |
modules::stream::adapters::KvStore
Default. In-process only.
modules::stream::adapters::RedisAdapter
Cron
| Adapter | Class | External dependency |
|---|---|---|
| KV Cron | modules::cron::KvCronAdapter | None |
| Redis Cron | modules::cron::RedisCronAdapter | Redis |
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
| Adapter | Class | External dependency |
|---|---|---|
| Local | modules::pubsub::LocalAdapter | None |
| Redis | modules::pubsub::RedisAdapter | Redis |
modules::pubsub::LocalAdapter
Default. In-process broadcast — subscribers must be in the same engine process.
modules::pubsub::RedisAdapter
Choosing an Adapter
| Single instance | Multi-instance | |
|---|---|---|
| Queue | BuiltinQueueAdapter | RedisAdapter or RabbitMQAdapter |
| State | KvStore (file_based) | RedisAdapter |
| Stream | KvStore | RedisAdapter |
| Cron | KvCronAdapter | RedisCronAdapter |
| PubSub | LocalAdapter | RedisAdapter |
Use
${VAR:default} syntax in iii-config.yaml to switch adapters per environment without changing the file: