Are you an LLM? You can read better optimized documentation at /reference/config/core.md for this page in Markdown format
Core Configuration
WowProperties
- Configuration class: WowProperties
- Prefix:
wow
| Name | Data Type | Description | Default Value |
|---|---|---|---|
enabled | Boolean | Enable/disable the Wow framework | true |
context-name | String | Bounded context name for the service | ${spring.application.name} |
shutdown-timeout | Duration | Graceful shutdown timeout | 60s |
yaml
wow:
enabled: true
context-name: order-service
shutdown-timeout: 120sBusProperties
BusProperties is the shared configuration for CommandBus, EventBus, and StateEventBus.
- Configuration class: BusProperties
| Name | Data Type | Description | Default Value |
|---|---|---|---|
type | BusType | Message bus implementation type | kafka |
local-first | LocalFirstProperties | LocalFirst mode configuration |
BusType
kotlin
enum class BusType {
KAFKA, // Apache Kafka (recommended for production)
REDIS, // Redis Streams
IN_MEMORY, // In-memory (for testing)
NO_OP; // No-op (for special cases)
}LocalFirst Mode
LocalFirst mode optimizes command and event processing by prioritizing local message consumption over distributed message bus:
Benefits
- Reduced Latency: Local message processing avoids network round trips
- Better Resource Utilization: Maximizes local processing before distributed
- Fault Tolerance: Failed local messages are retried via distributed bus
| Name | Data Type | Description | Default Value |
|---|---|---|---|
local-first.enabled | Boolean | Enable LocalFirst mode | true |
Command Bus
- Configuration class: CommandProperties
- Prefix:
wow.command.
| Name | Data Type | Description | Default Value |
|---|---|---|---|
bus | BusProperties | Command bus configuration | |
idempotency | IdempotencyProperties | Command idempotency |
yaml
wow:
command:
bus:
type: kafka
local-first:
enabled: true
idempotency:
enabled: true
bloom-filter:
expected-insertions: 1000000
ttl: PT60S
fpp: 0.00001IdempotencyProperties
- Configuration class: IdempotencyProperties
| Name | Data Type | Description | Default Value |
|---|---|---|---|
enabled | boolean | Whether to enable | true |
bloom-filter | BloomFilter | BloomFilter |
BloomFilter
| Name | Data Type | Description | Default Value |
|---|---|---|---|
ttl | Duration | Time to live | Duration.ofMinutes(1) |
expected-insertions | Long | Expected number of insertions | 1000_000 |
fpp | Double | False positive probability | 0.00001 |
Event Bus
- Configuration class: EventProperties
- Prefix:
wow.event.
| Name | Data Type | Description | Default Value |
|---|---|---|---|
bus | BusProperties | Event bus configuration |
yaml
wow:
event:
bus:
type: kafka
local-first:
enabled: trueEvent Sourcing
EventStoreProperties
- Configuration class: EventStoreProperties
- Prefix:
wow.eventsourcing.store
| Name | Data Type | Description | Default Value |
|---|---|---|---|
storage | EventStoreStorage | Event store storage backend | mongo |
yaml
wow:
eventsourcing:
store:
storage: mongoEventStoreStorage
kotlin
enum class EventStoreStorage {
MONGO,
REDIS,
R2DBC,
IN_MEMORY,
DELAY
;
}SnapshotProperties
- Configuration class: SnapshotProperties
- Prefix:
wow.eventsourcing.snapshot
| Name | Data Type | Description | Default Value |
|---|---|---|---|
enabled | Boolean | Whether to enable snapshots | true |
strategy | Strategy | Snapshot strategy | all |
version-offset | Int | Version offset threshold | 5 |
storage | SnapshotStorage | Snapshot storage backend | mongo |
yaml
wow:
eventsourcing:
snapshot:
enabled: true
strategy: version_offset
version-offset: 10
storage: mongoStrategy
kotlin
enum class Strategy {
ALL,
VERSION_OFFSET,
;
}SnapshotStorage
kotlin
enum class SnapshotStorage {
MONGO,
REDIS,
R2DBC,
ELASTICSEARCH,
IN_MEMORY,
DELAY
;
}State Event Bus
- Configuration class: StateProperties
- Prefix:
wow.eventsourcing.state
| Name | Data Type | Description | Default Value |
|---|---|---|---|
bus | BusProperties | State event bus configuration |
yaml
wow:
eventsourcing:
state:
bus:
type: kafka
local-first:
enabled: truePrepare Key
- Prefix:
wow.prepare
| Name | Data Type | Description | Default Value |
|---|---|---|---|
enabled | Boolean | Enable PrepareKey functionality | true |
storage | PrepareStorage | Storage backend for PrepareKey | MONGO |
base-packages | List<String> | Base packages to scan for PrepareKey definitions | [] |
PrepareStorage Values
| Value | Description |
|---|---|
MONGO | MongoDB (recommended) |
REDIS | Redis |
yaml
wow:
prepare:
enabled: true
storage: mongo
base-packages:
- com.example.domainEnvironment-Specific Configuration
Development Environment
yaml
wow:
command:
bus:
type: in_memory
event:
bus:
type: in_memory
eventsourcing:
store:
storage: in_memory
snapshot:
storage: in_memoryProduction Environment
yaml
wow:
command:
bus:
type: kafka
local-first:
enabled: true
event:
bus:
type: kafka
local-first:
enabled: true
eventsourcing:
store:
storage: mongo
snapshot:
enabled: true
strategy: version_offset
version-offset: 10
storage: mongoComplete Configuration Example
yaml
spring:
application:
name: order-service
wow:
enabled: true
context-name: order-service
shutdown-timeout: 120s
command:
bus:
type: kafka
local-first:
enabled: true
event:
bus:
type: kafka
local-first:
enabled: true
eventsourcing:
store:
storage: mongo
snapshot:
enabled: true
strategy: version_offset
version-offset: 10
storage: mongo
state:
bus:
type: kafka
local-first:
enabled: true
kafka:
bootstrap-servers:
- kafka-0:9092
- kafka-1:9092
- kafka-2:9092
topic-prefix: 'wow.'
mongo:
enabled: true
auto-init-schema: true
openapi:
enabled: true
webflux:
enabled: true
global-error:
enabled: true