Skip to content

Spring Properties Reference

This page documents the dsm.* Spring Boot configuration surface.

Root Properties

dsm.cluster-id

Required. Logical DSM cluster identifier.

dsm.service-id

Required. Logical service-family identifier inside the DSM cluster.

dsm.runtime.dynamic-registration

Optional. Default: false.

Controls whether the built runtime allows dynamic collection registration after construction.

Node Properties

dsm.node.id

Optional. Default: random UUID.

dsm.node.host

Optional. Default: resolved local host address.

dsm.node.port

Optional. Default: 9090.

Cluster Properties

dsm.cluster.mode

Optional. Default: STANDALONE.

Allowed values:

  • STANDALONE
  • MULTICAST
  • UNICAST

Multicast Properties

dsm.cluster.multicast.group

Default: 239.0.77.1

dsm.cluster.multicast.port

Default: 4446

dsm.cluster.multicast.heartbeat-interval

Default: 1s

dsm.cluster.multicast.failure-threshold

Default: 5

Unicast Properties

dsm.cluster.unicast.gossip-port

Default: 4447

dsm.cluster.unicast.gossip-interval

Default: 1s

dsm.cluster.unicast.gossip-fanout

Default: 3

dsm.cluster.unicast.failure-threshold

Default: 5

dsm.cluster.unicast.seed-nodes

Default: empty list

Format depends on the configured membership implementation. In practice this is typically a host and port list used for peer discovery.

dsm.cluster.unicast.dns.hostname

Optional.

dsm.cluster.unicast.dns.port

Default: 9090

Security Properties

dsm.security.enabled

Optional. Default: false.

dsm.security.cluster-secret

Required when security is enabled.

dsm.security.nonce.window-size

Default: 1024

dsm.security.nonce.max-clock-drift

Default: 5s

Collection Definitions

Collections are configured as a list under dsm.collections.

Each item supports these common fields.

Common Fields

  • bean-name: optional explicit bean alias
  • tenant-id: required
  • application-id: required
  • collection-id: required
  • schema-id: required
  • type: optional, default REGISTER
  • consistency-tier: optional in the model, but must match the collection type in practice
  • codec-bean: required
  • qos-profile: optional
  • replication-profile: optional
  • persistence-profile: optional

Allowed type Values

  • REGISTER
  • LEASE
  • CRDT

Consistency Tier Rules

The validator enforces these combinations:

  • REGISTER type requires consistency-tier: REGISTER
  • LEASE type requires consistency-tier: LEASE
  • CRDT type requires consistency-tier: CRDT

Lease Fields

Nested under dsm.collections[].lease.

  • mode: default AUTONOMOUS
  • term: default 10s
  • renew-skew: default 3s
  • expiry-grace: default 500ms
  • entity-factory-bean: required for lease collections

Validation rules:

  • only AUTONOMOUS is supported on the current Spring path
  • term, renew-skew, and expiry-grace must be positive
  • renew-skew must be smaller than term

CRDT Fields

Nested under dsm.collections[].crdt.

  • state-codec-bean: required for CRDT collections
  • initial-state-bean: required for CRDT collections
  • merger-bean: required for CRDT collections

Built-In Profile Names

QoS Profiles

  • best-effort-meta
  • control-critical
  • standard

If omitted, defaults are selected by collection type:

  • register -> best-effort-meta
  • lease -> control-critical
  • CRDT -> standard

Replication Profiles

  • embedded-register
  • embedded-lease
  • embedded-crdt

If omitted, defaults are selected by collection type.

Persistence Profiles

  • ephemeral
  • local-durable

If omitted, defaults are:

  • register -> ephemeral
  • lease -> local-durable
  • CRDT -> local-durable

Bean Naming Rules

Each configured collection handle always gets a stable bean name in this form:

text
dsmCollection:<tenant>/<application>/<collection>

If bean-name is set, that value is registered as an alias in addition to the stable name.

Startup Failure Conditions

Spring startup will fail fast when:

  • a required text property is missing
  • a referenced supporting bean does not exist
  • two collections use the same locator
  • two collections reuse the same explicit bean-name
  • the collection type and consistency tier do not match

Example

yaml
dsm:
  cluster-id: runtime-example
  service-id: gateway-service
  cluster:
    mode: STANDALONE
  collections:
    - bean-name: routeHintsCollection
      tenant-id: shared
      application-id: gateway
      collection-id: route-hints
      schema-id: route-hints/v1
      type: REGISTER
      consistency-tier: REGISTER
      codec-bean: routeHintCodec