KubeMQ
IntegrationsSpring BootReference

Configuration Reference

Every kubemq.* property for the Spring Boot starter — connection, TLS, listeners, template, health, metrics, and Kotlin — with types and defaults.

This page is the authoritative reference for the KubeMQ Spring Boot Starter's configuration surface: the module coordinates and every kubemq.* property bound from KubeMQProperties. For the runtime API (the KubeMQTemplate send methods, listener annotations, the Spring Cloud Stream binder, and Actuator endpoints), see the API reference.

Modules & Coordinates

The project is a multi-module Gradle build published under group io.kubemq at version 1.0.0. Most applications add only kubemq-spring-boot-starter; the binder, Kotlin, and test modules are added when you need them.

Module (artifact ID)GroupVersionPurpose
kubemq-spring-boot-autoconfigureio.kubemq1.0.0Auto-configuration, KubeMQTemplate, listener annotations, health, metrics
kubemq-spring-boot-starterio.kubemq1.0.0Dependency aggregator — add this to your project
kubemq-spring-cloud-stream-binderio.kubemq1.0.0Spring Cloud Stream binder for Events, Events Store, and Queues
kubemq-spring-boot-starter-kotlinio.kubemq1.0.0Kotlin coroutine extensions, Flow adapters, and configuration DSL
kubemq-spring-boot-starter-testio.kubemq1.0.0MockKubeMQServer, TestContainers, and test harness
build.gradle.kts
dependencies {
    implementation("io.kubemq:kubemq-spring-boot-starter:1.0.0")

    // Add only when you need them:
    implementation("io.kubemq:kubemq-spring-cloud-stream-binder:1.0.0")
    implementation("io.kubemq:kubemq-spring-boot-starter-kotlin:1.0.0")
    testImplementation("io.kubemq:kubemq-spring-boot-starter-test:1.0.0")
}

Start a local broker with Docker — the gRPC API the starter connects to listens on 50000, and the shared HTTP/REST and dashboard endpoints on 9090:

docker run -d \  --name kubemq \  -p 50000:50000 \  -p 9090:9090 \  -e KUBEMQ_TOKEN=YOUR_LICENSE_KEY \  europe-docker.pkg.dev/kubemq/images/kubemq:next

The Spring Boot Starter speaks gRPC to the broker on 50000 through the native KubeMQ Java SDK — there is no connector enable flag to set.

Configuration Properties

All properties are bound from KubeMQProperties under the kubemq.* prefix. Duration values accept Spring's duration syntax (30s, 5m, 100ms), and DataSize values accept sizes such as 100MB.

Top-Level Properties

PropertyTypeDefaultDescription
kubemq.enabledbooleantrueMaster switch for all KubeMQ auto-configuration.
kubemq.addressStringlocalhost:50000KubeMQ server gRPC address in host:port format.
kubemq.client-idString""Client identifier sent with every request. Empty means the SDK generates a UUID.
kubemq.auth-tokenString""JWT/OIDC authentication token.
application.yml
kubemq:
  enabled: true
  address: localhost:50000
  client-id: my-app
  auth-token: ""

TLS — kubemq.tls.*

Bound from KubeMQProperties.Tls. Configures TLS/mTLS for the gRPC connection.

PropertyTypeDefaultDescription
kubemq.tls.enabledbooleanfalseEnable TLS for the gRPC connection.
kubemq.tls.cert-fileString""Path to the client certificate (mTLS).
kubemq.tls.key-fileString""Path to the client private key (mTLS).
kubemq.tls.ca-cert-fileString""Path to the CA certificate that signed the server certificate.
application.yml
kubemq:
  tls:
    enabled: true
    cert-file: /etc/kubemq/tls/client.crt
    key-file: /etc/kubemq/tls/client.key
    ca-cert-file: /etc/kubemq/tls/ca.crt

Connection — kubemq.connection.*

Bound from KubeMQProperties.Connection and KubeMQProperties.KeepAlive. Tunes the gRPC channel.

PropertyTypeDefaultDescription
kubemq.connection.timeoutDuration30sConnection establishment timeout.
kubemq.connection.max-receive-sizeDataSize100MBMaximum inbound message size on the gRPC channel.
kubemq.connection.keep-alive.timeDuration30sInterval between gRPC keep-alive pings.
kubemq.connection.keep-alive.timeoutDuration10sTime to wait for a keep-alive ping acknowledgement before closing the connection.
application.yml
kubemq:
  connection:
    timeout: 30s
    max-receive-size: 100MB
    keep-alive:
      time: 30s
      timeout: 10s

Listener — kubemq.listener.*

Bound from KubeMQProperties.Listener and the per-pattern nested classes. These are the defaults applied to every @KubeMQ*Listener / @KubeMQ*Handler; individual annotations can override them.

The top-level listener settings apply to all patterns:

PropertyTypeDefaultDescription
kubemq.listener.concurrencyint1Number of concurrent message processors per listener.
kubemq.listener.auto-startupbooleantrueWhether listeners start with the application context.
kubemq.listener.shutdown-timeoutDuration30sGrace period for draining in-flight messages on shutdown.

Queue listeners add poll-loop and acknowledgement settings (KubeMQProperties.QueuesListener):

PropertyTypeDefaultDescription
kubemq.listener.queues.poll-timeoutDuration5sMaximum time to wait for messages per poll cycle.
kubemq.listener.queues.max-poll-messagesint1Maximum messages returned per poll.
kubemq.listener.queues.visibility-timeoutDuration30sTime received messages stay hidden from other consumers.
kubemq.listener.queues.auto-ackbooleanfalseWhether messages are acknowledged automatically on receipt.
kubemq.listener.queues.error-backoff-initialDuration1sInitial backoff after a poll-loop error.
kubemq.listener.queues.error-backoff-maxDuration30sMaximum backoff between retries.
kubemq.listener.queues.error-backoff-multiplierdouble2.0Multiplier applied to the backoff after each consecutive error.

Command and query handlers add a response timeout (KubeMQProperties.CommandsListener / KubeMQProperties.QueriesListener):

PropertyTypeDefaultDescription
kubemq.listener.commands.timeoutDuration10sResponse timeout for command handlers.
kubemq.listener.queries.timeoutDuration10sResponse timeout for query handlers.

Events are push-based subscriptions in KubeMQ, so kubemq.listener.events has no poll-related settings — it is reserved for future events-specific configuration.

application.yml
kubemq:
  listener:
    concurrency: 1
    auto-startup: true
    shutdown-timeout: 30s
    queues:
      poll-timeout: 5s
      max-poll-messages: 1
      visibility-timeout: 30s
      auto-ack: false
      error-backoff-initial: 1s
      error-backoff-max: 30s
      error-backoff-multiplier: 2.0
    commands:
      timeout: 10s
    queries:
      timeout: 10s

Template, Health, Metrics & Kotlin

The remaining nested groups on KubeMQProperties control the send-side template, the Actuator health indicator, Micrometer metrics, and Kotlin coroutine support.

PropertyTypeDefaultDescription
kubemq.template.observation-enabledbooleantrueWrap KubeMQTemplate sends in a Micrometer Observation. Requires an ObservationRegistry.
kubemq.health.enabledbooleantrueRegister the KubeMQ Actuator health indicator.
kubemq.health.timeoutDuration5sPer-client ping timeout for the health check.
kubemq.health.cache-durationDuration15sHow long a health result is cached before re-probing the broker.
kubemq.metrics.enabledbooleantrueRegister Micrometer metrics for KubeMQ operations.
kubemq.metrics.scrape-intervalDuration30sInterval for periodic metric collection.
kubemq.kotlin.dispatcherStringdefaultCoroutine dispatcher for suspend-function listeners. One of default, io, or unconfined.
application.yml
kubemq:
  template:
    observation-enabled: true
  health:
    enabled: true
    timeout: 5s
    cache-duration: 15s
  metrics:
    enabled: true
    scrape-interval: 30s
  kotlin:
    dispatcher: default

Requirements & Compatibility

RequirementVersion
Java17+
Spring Boot3.2.0+
Spring Cloud (binder module)2023.0.0
KubeMQ brokergRPC API on port 50000

The starter sets sourceCompatibility/targetCompatibility to Java 17 and imports the spring-boot-dependencies:3.2.0 BOM. The Spring Cloud Stream binder additionally imports the spring-cloud-dependencies:2023.0.0 BOM.

Was this page helpful?

On this page