Configuration Keys
V10's keys live under wow.* too, but most 9.x keys do not carry over: a 9.x key V10 does not name binds to nothing, and the service refuses to start, naming it and pointing to this page. A few keep their name and meaning: wow.kafka.bootstrap-servers, wow.kafka.properties, wow.query.require-explicit-entry, wow.query.require-authenticated-scope, wow.query.sensitivity.display-comparable. Map every key the 9.x service sets to its V10 counterpart, or record it as removed with what it configured. The wow-migrate Skill does this with the source. Configuration Keys is the complete list of V10 keys, generated from the code; Configure a Service explains them by task.
The service and its node
| 9.x | V10 |
|---|---|
wow.context-name | The context is the code's @BoundedContext; a service serves the contexts on its class path, narrowed with wow.contexts.include and exclude. Its name is wow.service, spring.application.name by default |
wow.shutdown-timeout, wow.shutdown-quiet-period | wow.cluster.drain-timeout, and Spring Boot's own graceful shutdown (Kubernetes) |
wow.dispatch.* (workers, max-in-flight, throughput, spin) | wow.executor.*: max-in-flight for the node, lane-capacity for one aggregate |
wow.command.bus.*, wow.event.bus.*, wow.eventsourcing.state.bus.*, local-first | Removed: there is no bus. Subscriptions read the log; a command runs on the node that owns its aggregate's partition (wow.cluster.*) |
wow.command.idempotency.* (the Bloom filter) | Removed: a retry with the same Wow-Request-Id is answered from its first commit, by the log itself |
wow.event.ack-on-unrecorded-failure | Removed: a failure parks the aggregate in the failure ledger (wow.subscription.*), nothing is acknowledged past it |
Stores
| 9.x | V10 |
|---|---|
wow.eventsourcing.store.storage, wow.eventsourcing.snapshot.storage | wow.backend: PostgreSQL or MongoDB, chosen by the application's DataSource or MongoClient by default; wow.log.store and wow.snapshot.stores name stores of wow.stores |
wow.eventsourcing.storage-routing.* | The stores wow.aggregates.[<context>.<aggregate>] names for an aggregate's log and snapshots, such as log.store |
wow.eventsourcing.snapshot.strategy, version-offset | wow.snapshot.*: snapshots are written by the built-in wow.snapshot subscription, in batches (wow.snapshot.write-batch); maintenance-interval and rebuild.* tune its maintenance |
wow.mongo.event-stream-database, snapshot-database, prepare-database | wow.mongo.database, one database for the log and every store |
wow.mongo.auto-init-schema | wow.ddl (auto, validate, none) for the framework's tables, collections, indexes and query indexes, and the Kafka topics |
wow.mongo.*-batch.*, wow.elasticsearch.*-batch.* | Removed: the log appends in batches of its own |
wow.prepare.* | Removed: reservations live in the backend, taken in decide |
wow.redis.* | Removed with the Redis backend |
wow.elasticsearch.* (event store) | Removed as an event store; in V10 Elasticsearch is a query backend |
Kafka
| 9.x | V10 |
|---|---|
wow.kafka.bootstrap-servers | wow.kafka.bootstrap-servers, now for published streams and commands to other contexts only |
wow.kafka.properties, producer, consumer, close-timeout | wow.kafka.properties, the same key (Kafka); producer and consumer have no counterpart until 10.x: put their settings in wow.kafka.properties; close-timeout is removed |
wow.kafka.receiver.decode-failure-strategy | Removed: a record a subscription cannot decode parks the aggregate its key names, or is passed over when its key names none (wow.subscription.undecodable.messages counts them) |
| Topic names by convention | wow.<context>.commands and wow.<context>.<aggregate>.state, created as wow.kafka.ddl says |
HTTP and queries
| 9.x | V10 |
|---|---|
wow.webflux.* (global-error, batch, query.default-list-size, state.*) | wow.http.* for the routes, wow.query.budgets.http.* for their queries: default-list-size, max-list-size, max-page-size, timeout |
wow.webflux.command.request.appender.* | wow.http.request-facts: the request headers a command keeps |
wow.query.http.* (max-list-size, max-page-size, max-filter-nodes, allow-expensive-operators, …) | wow.query.budgets.http.*, the same names |
wow.query.abac.*, wow.query.sensitivity.* | wow.query.sensitivity.*; wow.query.abac.* is removed and refused at startup (access attributes and access policies replace it: Ownership and Access) |
wow.query.require-explicit-entry, require-authenticated-scope | The same keys |
wow.query.schema.* (revalidate-interval, legacy-declarations) | Removed: the query model comes from the Manifest |
wow.query.datasets, wow.query.clickhouse.* | wow.query.dataset.* and wow.clickhouse.* (Publish Datasets) |
wow.openapi.enabled | wow.http.openapi.enabled, and wow.http.openapi.springdoc.* for springdoc |
Security, operations and analytics
| 9.x | V10 |
|---|---|
wow.cosec.*, wow.cosec.abac.* | wow.cosec.*: mode, tenant-level, cross-scope, authorizer (Secure a Deployment); wow.cosec.abac.* is removed, as is query ABAC (wow.query.abac.*, refused at startup) |
wow.compensation.*, the compensation service's own keys | wow.subscription.parked.* per node, and wow.subscriptions.[<context>.<processor.function>].parked.* per subscription; wow.http.ops.enabled for the operator routes, and wow.ops.webhook.* and wow.ops.publish.* for the webhook and publishing to the ops service (Platform Services) |
wow.bi.script.* | Removed with BI sync: the ClickHouse sink, wow.clickhouse.sink.* (ClickHouse) |
| A fixed tenant per aggregate in code | wow.aggregates.[<context>.<aggregate>].tenant |
New in V10, with no 9.x counterpart: wow.log.partitions (fixed once the log holds entries), wow.internal.* (the internal port, 9090 by default), wow.node.*, wow.wait.*, wow.tenant.default, wow.health.*, wow.timers.* and wow.node.standby.