iii-config.yaml without touching application code.
Pattern
name— the adapter short nameconfig— adapter-specific config (omit if not needed)
Adapter Reference
Queue
| Adapter | Name | External dependency |
|---|---|---|
| Built-in | builtin | None |
| Redis | redis | Redis |
| RabbitMQ | rabbitmq | RabbitMQ |
builtin
Default. In-process only with retries and DLQ — does not share messages across engine instances.
redis
rabbitmq
For retry behavior, dead-letter queues, and full config reference, see the Queue worker.
State
| Adapter | Name | External dependency |
|---|---|---|
| KV Store | kv | None |
| Redis | redis | Redis |
| Bridge | bridge | Remote iii Engine |
kv
Default. Supports in-memory or file-based persistence.
redis
bridge
Forwards state operations to a remote iii Engine.
Stream
| Adapter | Name | External dependency |
|---|---|---|
| KV Store | kv | None |
| Redis | redis | Redis |
kv
Default. In-process only.
redis
Cron
| Adapter | Name | External dependency |
|---|---|---|
| KV Cron | kv | None |
| Redis Cron | redis | Redis |
kv
Default. Process-local locks — jobs may run on every instance in multi-instance deployments.
redis
Distributed locking via Redis — ensures each job runs only once across all instances.
PubSub
| Adapter | Name | External dependency |
|---|---|---|
| Local | local | None |
| Redis | redis | Redis |
local
Default. In-process broadcast — subscribers must be in the same engine process.
redis
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: