KubeMQ
ConfigureReference

Connectors

Runtime settings for MCP, A2A agents, CloudEvents, and the wire-protocol connectors — MQTT, AMQP 0.9.1/1.0, STOMP, Kafka, AWS, and GCP Pub/Sub.

KubeMQ ships ten connectors — the MCP and A2A (agents) agent platforms, CloudEvents, and seven wire-protocol connectors: MQTT, AMQP 0.9.1, AMQP 1.0, STOMP, Kafka, AWS (SQS/SNS), and GCP Pub/Sub. The three HTTP-server connectors (MCP, A2A, CloudEvents) are on by default; the seven wire-protocol connectors are opt-in (disabled by default) — each opens a new network port and must be explicitly enabled. Each setting is shown for both targets — Docker single-node (config.yaml key · env var) and Kubernetes/Helm (spec.* path). A dash () in the Helm/CRD column means the setting is not available on that surface (it is config.yaml/env-var-only — supply it through a mounted config file or a raw pod env var, never a typed CRD field).

Connector environment-variable prefixes follow the acronym rule: all-caps acronym segments drop the underscore (CONNECTORSMCP_*, CONNECTORSCE_*, CONNECTORSMQTT_*, CONNECTORSA2_A_*), while Title-case segments keep it (CONNECTORS_AMQP_*, CONNECTORS_AMQP10_*, CONNECTORS_STOMP_*, CONNECTORS_KAFKA_*, CONNECTORS_AWS_*, CONNECTORS_GCP_*). See the reference legend for the full rule and the silently-ignored wrong twin.

Enabling and disabling a connector

The toggle shape differs by connector type and by target:

  • HTTP-server connectors (MCP, A2A, CloudEvents): always on by default. Docker turns them off with enable: false; Kubernetes/Helm turns them off with disabled: true (omit the key while the connector is on).
  • Wire-protocol connectors (MQTT, AMQP 0.9.1, AMQP 1.0, STOMP, Kafka, AWS, GCP Pub/Sub): disabled by default (opt-in). Docker turns them on with enable: true; Kubernetes/Helm turns them on with enabled: true (a positive-sense field — omitting it leaves the connector off).

The snippets below show turning CloudEvents off (HTTP-server connector, uses disabled:) and enabling MQTT (wire-protocol connector, uses enabled:). See the Docker guide and the Kubernetes guide for complete, runnable configurations.

config.yaml
connectors:
  ce:
    enable: false
values.yaml
ce:
  disabled: true
docker run
docker run -e CONNECTORSMQTT_ENABLE=true ...
values.yaml
mqtt:
  enabled: true

Service exposure & session affinity

Every wire connector carries the same Kubernetes exposure surface on the CRD, alongside its protocol settings. These are Kubernetes-only — on Docker you publish a port with docker run -p.

FieldTypeDefaultValid valuesHelm/CRD pathNotes
Service exposurestring (enum)ClusterIPClusterIP / NodePort / LoadBalancerspec.<connector>.exposeType of the connector's Service.
Session affinitystring (enum)NoneNone / ClientIPspec.<connector>.sessionAffinityPins a client to one replica. Required for AWS and GCP — see the callout below.
Node portint32unset30000–32767spec.<connector>.nodePortHonored only when expose: NodePort. Unset ⇒ the kernel assigns one, which you cannot configure into a client ahead of the install.
TLS node portint32unset30000–32767spec.<connector>.tlsNodePortSame, for the connector's TLS listener.
WebSocket node portint32unset30000–32767spec.mqtt.wsNodePortMQTT only — its WebSocket listener.

Which connector has which:

ConnectorexposesessionAffinitynodePorttlsNodePortwsNodePort
MQTT
AMQP 0.9.1
AMQP 1.0
STOMP
Kafka
AWS
GCP Pub/Sub
CloudEvents— (rides REST)

Session affinity is not optional for the AWS and GCP connectors on a multi-replica cluster. Both protocols hand the client a token that only the replica that minted it can honor:

  • AWS — an SQS receipt handle is bound to the replica that issued it, and it is the only way to delete a message. A delete that lands on another replica is refused, the message reappears at the visibility timeout, and the queue never drains. A client holding a single keep-alive connection is pinned by accident and never sees this; it bites when the connection breaks, or when the client does not pool connections.
  • GCP Pub/Sub — an ack id minted by one replica and acked on another is refused, with no disruption required to trigger it. Ordered subscriptions additionally need stickiness to preserve per-key ordering.

Set sessionAffinity: ClientIP on both:

values.yaml
aws:
  enabled: true
  expose: NodePort
  sessionAffinity: ClientIP
  nodePort: 30171
gcp:
  enabled: true
  expose: NodePort
  sessionAffinity: ClientIP
  nodePort: 32439

ClientIP affinity is unreliable when clients share a NAT or egress IP — every client behind it looks like one address and lands on one replica. Where an ingress exists, prefer cookie-based affinity on the ingress instead.

AMQP 0.9.1 and AMQP 1.0 share one listener, and one Service. Both ride 5672/5671; enabling both is supported and both are served through the <release>-amqp Service. Enabling amqp10 additionally creates a <release>-amqp10 Service as a discoverability alias onto that same listener. expose and sessionAffinity are shared between the two blocks — last one wins — so set them consistently. The operator raises an AmqpSessionAffinityConflict warning event if the two disagree.

Kafka exposure on a multi-replica cluster needs one address per broker. Kafka hands every client an address per broker in its Metadata response, so a single Service — ClusterIP, NodePort, or LoadBalancer alike — is one address that round-robins across all replicas and cannot address a 3-broker cluster. Setting kafka.expose: LoadBalancer on a multi-replica cluster does not give you working external Kafka.

  • In-cluster, any replica count: leave spec.kafka.advertisedHost unset. The operator derives per-broker addresses from the pods' stable DNS names and gives each pod its own advertised host. Nothing to configure.
  • External, single replica: expose + advertisedHost works.
  • External, multi-replica: you must provision one client-reachable address per broker — a Service or LoadBalancer per pod, or a per-pod NodePort — and list them in spec.kafka.peers. The operator does not create per-broker addressing for you. Leave advertisedHost unset in this case: with a peer map each broker advertises itself from its own entry, and one advertisedHost could only ever be right for one of them.

CloudEvents has no port or Service of its own. It rides the server's shared HTTP listener alongside REST, and is reached and exposed through spec.rest.expose / spec.rest.nodePort. There is deliberately no spec.ce.expose.

MCP

The Model Context Protocol agent platform, served on the shared HTTP server. Env prefix CONNECTORSMCP_* (all-caps MCP collapses the underscore after CONNECTORS); CRD group spec.mcp.*. This is an HTTP-family connector — on by default (opt-out): Docker turns it off with enable: false, Kubernetes/Helm with spec.mcp.disabled: true.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enable / disablebooltrue (on)true / falseconnectors.mcp.enable · CONNECTORSMCP_ENABLEspec.mcp.disabledInverted boolean: Docker enable: false turns it off; Helm disabled: true turns it off.
Tool timeout (s)int300> 0connectors.mcp.tooltimeoutseconds · CONNECTORSMCP_TOOL_TIMEOUT_SECONDSspec.mcp.toolTimeoutSecondsMust be positive (rejected if ≤ 0). CRD minimum 1.
Trusted originsstring[]["auto"]origin list / "auto"connectors.mcp.trustedorigins · CONNECTORSMCP_TRUSTED_ORIGINSspec.mcp.trustedOriginsauto derives allowed origins from the request host.

The MCP env prefix is CONNECTORSMCP_ — no underscore between CONNECTORS and MCP. The natural CONNECTORS_MCP_* form does not bind — the server starts, accepts the variable without error, and silently ignores it. Unlike CloudEvents, MCP has no natural-name alias, so CONNECTORSMCP_ENABLE / CONNECTORSMCP_TOOL_TIMEOUT_SECONDS / CONNECTORSMCP_TRUSTED_ORIGINS are the only working names.

A2A (Agents)

The agent-to-agent platform, served on the shared HTTP server. Env prefix CONNECTORSA2_A_*; the CRD group is spec.agents.* (note the group name differs from the connector name). This is an HTTP-family connector — on by default (opt-out): Docker turns it off with enable: false, Kubernetes/Helm with spec.agents.disabled: true.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enable / disablebooltrue (on)true / falseconnectors.a2a.enable · CONNECTORSA2_A_ENABLEspec.agents.disabledInverted boolean.
Agent TTL (s)int300> 0connectors.a2a.agentttlseconds · CONNECTORSA2_A_AGENT_TTL_SECONDSspec.agents.agentTtlSecondsMust be positive. CRD json tag is agentTtlSeconds (lowercase tl).
Default timeout (s)int300> 0connectors.a2a.defaulttimeoutseconds · CONNECTORSA2_A_DEFAULT_TIMEOUT_SECONDSspec.agents.defaultTimeoutSecondsMust be positive.
Max timeout (s)int3600≥ default timeoutconnectors.a2a.maxtimeoutseconds · CONNECTORSA2_A_MAX_TIMEOUT_SECONDSspec.agents.maxTimeoutSecondsCross-field: must be ≥ Default timeout (enforced server-side, not by the CRD schema).
Max agentsint0≥ 0 (0 = unlimited)connectors.a2a.maxagents · CONNECTORSA2_A_MAX_AGENTSspec.agents.maxAgents0 = unlimited.
Max SSE idle (s)int300> 0connectors.a2a.maxsseidleseconds · CONNECTORSA2_A_MAX_SSE_IDLE_SECONDSspec.agents.maxSseIdleSecondsMust be positive. CRD json tag is maxSseIdleSeconds.
Trusted originsstring[]["auto"]origin list / "auto"connectors.a2a.trustedorigins · CONNECTORSA2_A_TRUSTED_ORIGINSspec.agents.trustedOrigins
Agent max response (bytes)int6410485760 (10 MB)≥ 0connectors.a2a.agentmaxresponsebytes · CONNECTORSA2_A_AGENT_MAX_RESPONSE_BYTESspec.agents.agentMaxResponseBytesCaps a downstream agent's response body.
Agent TLS skip verifyboolfalsetrue / falseconnectors.a2a.agenttlsskipverify · CONNECTORSA2_A_AGENT_TLS_SKIP_VERIFYspec.agents.agentTlsSkipVerifyCRD json tag is agentTlsSkipVerify.
Agent max concurrencyint100any int (≤ 0 accepted)connectors.a2a.agentmaxconcurrency · CONNECTORSA2_A_AGENT_MAX_CONCURRENCYspec.agents.agentMaxConcurrency≤ 0 is accepted and silently clamped back to 100 — it does not error, and there is no output saying it was rewritten.
Metrics retention (h)int168 (7 days)> 0connectors.a2a.metricsretentionhours · CONNECTORSA2_A_METRICS_RETENTION_HOURSspec.agents.metricsRetentionHoursMust be positive. Retention window for per-agent metrics.

The A2A env prefix is CONNECTORSA2_A_ — not CONNECTORS_A2A_. The convertEnvFormat rule splits A2A into A2_A (the regex breaks between the digit and the trailing A), so the agent variables read CONNECTORSA2_A_MAX_AGENTS, CONNECTORSA2_A_AGENT_TTL_SECONDS, and so on. Neither CONNECTORS_A2A_* nor CONNECTORSA2A_* binds — both are silently ignored. Note also that the CRD group is spec.agents.*, not spec.a2a.*.

CloudEvents

The CloudEvents connector, served on the shared HTTP server. Env prefix CONNECTORSCE_*; CRD group spec.ce.*. This is an HTTP-family connector — on by default (opt-out): Docker turns it off with enable: false, Kubernetes/Helm with spec.ce.disabled: true.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enable / disablebooltrue (on)true / falseconnectors.ce.enable · CONNECTORSCE_ENABLEspec.ce.disabledInverted boolean.
Timeout (s)int60> 0connectors.ce.timeoutseconds · CONNECTORSCE_TIMEOUT_SECONDSspec.ce.timeoutSecondsMust be positive.
Sub buffer sizeint100110000connectors.ce.subbuffsize · CONNECTORSCE_SUB_BUFF_SIZEspec.ce.subBuffSizeRejected if ≤ 0 or > 10000.
Max SSE idle (s)int300> 0connectors.ce.maxsseidleseconds · CONNECTORSCE_MAX_SSE_IDLE_SECONDSspec.ce.maxSseIdleSecondsMust be positive. CRD json tag is maxSseIdleSeconds.
Max SSE connectionsint0≥ 0 (0 = unlimited)connectors.ce.maxsseconnections · CONNECTORSCE_MAX_SSE_CONNECTIONSspec.ce.maxSseConnections0 = unlimited. CRD json tag is maxSseConnections.

CloudEvents accepts both env forms. The primary name is the collapsed CONNECTORSCE_* (e.g. CONNECTORSCE_ENABLE), but CE is the one connector that also binds the natural CONNECTORS_CE_* alias (CONNECTORS_CE_ENABLE, CONNECTORS_CE_TIMEOUT_SECONDS, …). Both resolve to the same setting — this compensating alias exists only for CloudEvents; MCP, A2A, and MQTT do not have it.

But the server warns that the alias is IGNORED, and that warning is wrong. The unknown-variable warner does not track the alias binding, so a CONNECTORS_CE_* variable is reported as ignored while its value is being applied. Meanwhile a typo in the collapsed form (CONNECTORSC_ENABLE) produces no warning at all, because collapsed names sit outside the warner's namespace list. See the reference legend for the full picture.

MQTT

The MQTT 3.1.1 / 5.0 wire protocol. Env prefix CONNECTORSMQTT_* (no underscore after CONNECTORS); CRD group spec.mqtt.*. This is a wire-protocol connector — opt-in (disabled by default): Docker turns it on with enable: true, Kubernetes/Helm with spec.mqtt.enabled: true (a positive-sense *bool — omitting it leaves MQTT off). Ports are string server-side ("" disables a listener) and int32 on the CRD.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enable / disableboolfalse (opt-in)true / falseconnectors.mqtt.enable · CONNECTORSMQTT_ENABLEspec.mqtt.enabledOpt-in: set true to open ports 1883/8883/8083. Helm uses positive-sense enabled: true.
Portstring1883port / ""connectors.mqtt.port · CONNECTORSMQTT_PORTspec.mqtt.portPlaintext TCP listener; "" disables it. CRD type int32 (1–65535).
TLS portstring8883port / ""connectors.mqtt.tlsport · CONNECTORSMQTT_TLS_PORTspec.mqtt.tlsPortTLS listener; active only when Security mode ≠ None. "" disables. CRD int32 (1–65535).
WebSocket portstring8083port / ""connectors.mqtt.wsport · CONNECTORSMQTT_WS_PORTspec.mqtt.wsPortWebSocket listener; "" disables. CRD int32 (1–65535).
Default patternenumeventsevents / store / noneconnectors.mqtt.defaultpattern · CONNECTORSMQTT_DEFAULT_PATTERNspec.mqtt.defaultPatternKubeMQ pattern for prefixless topics.
Sub buffer sizeint100110000connectors.mqtt.subbuffsize · CONNECTORSMQTT_SUB_BUFF_SIZEspec.mqtt.subBuffSizeRejected if ≤ 0 or > 10000.
Queue ACK timeout (s)int30> 0connectors.mqtt.queueacktimeoutseconds · CONNECTORSMQTT_QUEUE_ACK_TIMEOUT_SECONDSspec.mqtt.queueAckTimeoutSecondsMust be positive.
RPC timeout (s)int30> 0connectors.mqtt.rpctimeoutseconds · CONNECTORSMQTT_RPC_TIMEOUT_SECONDSspec.mqtt.rpcTimeoutSecondsMust be positive.
RPC max pendingint1024> 0connectors.mqtt.rpcmaxpending · CONNECTORSMQTT_RPC_MAX_PENDINGspec.mqtt.rpcMaxPendingMust be positive.
Detail history enabledbooltruetrue / falseconnectors.mqtt.detailhistoryenabled · CONNECTORSMQTT_DETAIL_HISTORY_ENABLEDspec.mqtt.detailHistoryEnabledMaster switch for per-entity (client/subscription) detail-page history recording.
Detail history max entitiesint5000≥ 0 (0 = unbounded)connectors.mqtt.detailhistorymaxentities · CONNECTORSMQTT_DETAIL_HISTORY_MAX_ENTITIESspec.mqtt.detailHistoryMaxEntitiesCaps tracked per-entity history keys; new keys refused beyond it. Validated even when history is off.
Capabilities · max clientsint640≥ 0 (0 = unlimited)connectors.mqtt.capabilities.maxclients · CONNECTORSMQTT_CAPABILITIES_MAX_CLIENTSspec.mqtt.capabilities.maxClients0 = unlimited (explicit opt-in; startup logs a WARN). Never clamped.
Capabilities · max packet size (bytes)uint324194304 (4 MB)0 or 14294967295connectors.mqtt.capabilities.maxpacketsizebytes · CONNECTORSMQTT_CAPABILITIES_MAX_PACKET_SIZE_BYTESspec.mqtt.capabilities.maxPacketSizeBytesA 0 is clamped back to 4 MB (0 = "unlimited" is a DoS footgun); effective value logged at startup.
Capabilities · receive maximumuint1610240 or 165535connectors.mqtt.capabilities.receivemaximum · CONNECTORSMQTT_CAPABILITIES_RECEIVE_MAXIMUMspec.mqtt.capabilities.receiveMaximumA 0 is clamped back to 1024.
Capabilities · max inflightuint168192065535connectors.mqtt.capabilities.maxinflight · CONNECTORSMQTT_CAPABILITIES_MAX_INFLIGHTspec.mqtt.capabilities.maxInflightNot clamped.
Capabilities · max session expiry (s)uint3236000 or 14294967295connectors.mqtt.capabilities.maxsessionexpiryseconds · CONNECTORSMQTT_CAPABILITIES_MAX_SESSION_EXPIRY_SECONDSspec.mqtt.capabilities.maxSessionExpirySecondsA 0 is clamped back to 3600.
Capabilities · max message expiry (s)int6486400≥ 0connectors.mqtt.capabilities.maxmessageexpiryseconds · CONNECTORSMQTT_CAPABILITIES_MAX_MESSAGE_EXPIRY_SECONDSspec.mqtt.capabilities.maxMessageExpirySecondsRejected if negative.
Capabilities · max QoSbyte202connectors.mqtt.capabilities.maxqos · CONNECTORSMQTT_CAPABILITIES_MAX_QOSspec.mqtt.capabilities.maxQosRejected if > 2.
Capabilities · min protocol versionbyte44 / 5connectors.mqtt.capabilities.minprotocolversion · CONNECTORSMQTT_CAPABILITIES_MIN_PROTOCOL_VERSIONspec.mqtt.capabilities.minProtocolVersion4 = MQTT 3.1.1, 5 = MQTT 5.0.
Capabilities · max subscriptions per clientint1000≥ 0 (0 = unlimited)connectors.mqtt.capabilities.maxsubscriptionsperclient · CONNECTORSMQTT_CAPABILITIES_MAX_SUBSCRIPTIONS_PER_CLIENTspec.mqtt.capabilities.maxSubscriptionsPerClientCaps distinct subscription filters per client; excess SUBSCRIBEs get SUBACK 0x97 (DoS cap). 0 = unlimited.

The MQTT env prefix is CONNECTORSMQTT_ — no underscore between CONNECTORS and MQTT. The natural CONNECTORS_MQTT_* form does not bind and is silently ignored. This applies to every MQTT variable, including the nested CONNECTORSMQTT_CAPABILITIES_* keys. Unlike CloudEvents, MQTT has no natural-name alias.

Some MQTT capabilities are forced, not configurable. At server construction the connector pins RetainAvailable = 0 (retained messages rejected), SharedSubAvailable = 1, and WildcardSubAvailable = 1 regardless of config. A partially-specified capabilities block leaves unset safety caps (maxPacketSizeBytes, receiveMaximum, maxSessionExpirySeconds) at 0, which the server clamps back to their safe defaults rather than treating as "unlimited" — the effective caps are logged at startup. At least one listener port (port, tlsPort, or wsPort) must be non-empty, and no two may share the same value.

AMQP 0.9.1

The AMQP 0.9.1 / RabbitMQ wire protocol. Env prefix CONNECTORS_AMQP_*; CRD group spec.amqp.*.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.amqp.enable · CONNECTORS_AMQP_ENABLEspec.amqp.enabledOpt-in wire connector: Docker enable: true, Helm enabled: true (positive-sense). Opens ports 5672/5671 (shared mux with AMQP 1.0).
Portint5672065535 (0 disables)connectors.amqp.port · CONNECTORS_AMQP_PORTspec.amqp.portPlaintext listener, shared with AMQP 1.0. Port and TlsPort cannot both be 0 when enabled. CRD accepts 165535.
TLS portint5671065535 (0 disables)connectors.amqp.tlsport · CONNECTORS_AMQP_TLS_PORTspec.amqp.tlsPortTLS listener.
Heartbeat (s)int600connectors.amqp.heartbeatseconds · CONNECTORS_AMQP_HEARTBEAT_SECONDSspec.amqp.heartbeatSeconds
Frame max (bytes)int1310724096 (accepted; > 512 MiB is clamped down)connectors.amqp.framemax · CONNECTORS_AMQP_FRAME_MAXspec.amqp.frameMaxSilently clamped down to 536870912 (512 MiB) if set higher (a stderr warning is emitted); a value ≥ 2³² would otherwise narrow to 0 and disable the codec frame-size cap.
Channel maxint2047165535connectors.amqp.channelmax · CONNECTORS_AMQP_CHANNEL_MAXspec.amqp.channelMax
Max connectionsint10000 (0 = unlimited)connectors.amqp.maxconnections · CONNECTORS_AMQP_MAX_CONNECTIONSspec.amqp.maxConnections0 = unlimited.
Max body size (bytes)int104857600> 0connectors.amqp.maxbodysize · CONNECTORS_AMQP_MAX_BODY_SIZEspec.amqp.maxBodySize
Default vhoststringdefaultnon-empty; no whitespace or ;:*>; no trailing .connectors.amqp.defaultvhost · CONNECTORS_AMQP_DEFAULT_VHOSTspec.amqp.defaultVhostBecomes a channel segment, so it must pass the channel-charset rules.
Get batch sizeint3211024connectors.amqp.getbatchsize · CONNECTORS_AMQP_GET_BATCH_SIZEspec.amqp.getBatchSizeMust also be ≤ queue.maxNumberOfMessages (cross-checked in top-level config validation).
Dead-letter max hopsint161connectors.amqp.deadlettermaxhops · CONNECTORS_AMQP_DEAD_LETTER_MAX_HOPSspec.amqp.deadLetterMaxHops
Max receive countint00 (0 = unlimited)connectors.amqp.maxreceivecount · CONNECTORS_AMQP_MAX_RECEIVE_COUNTspec.amqp.maxReceiveCount0 = unlimited. Must also be ≤ queue.maxReceiveCount (cross-checked in top-level config validation).

Two cross-checks against the queue limits. The server rejects the config unless amqp.maxReceiveCount ≤ queue.maxReceiveCount and amqp.getBatchSize ≤ queue.maxNumberOfMessages. Keep the AMQP values within the queue ceilings (see Storage & Queues).

AMQP 1.0

The AMQP 1.0 wire protocol (also the JMS / Qpid path). Env prefix CONNECTORS_AMQP10_*; CRD group spec.amqp10.*.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.amqp10.enable · CONNECTORS_AMQP10_ENABLEspec.amqp10.enabledOpt-in wire connector. Opens ports 5672/5671 (shared mux with AMQP 0.9.1).
Portint5672065535 (0 disables)connectors.amqp10.port · CONNECTORS_AMQP10_PORTspec.amqp10.portShared with AMQP 0.9.1 — a Port == Amqp.Port collision is intentionally allowed (the mux dedupes the bind). Port and TlsPort cannot both be 0.
TLS portint5671065535 (0 disables)connectors.amqp10.tlsport · CONNECTORS_AMQP10_TLS_PORTspec.amqp10.tlsPort
Max frame size (bytes)int131072512connectors.amqp10.maxframesize · CONNECTORS_AMQP10_MAX_FRAME_SIZEspec.amqp10.maxFrameSizeSpec floor 512.
Max message size (bytes)int64104857600> 0connectors.amqp10.maxmessagesize · CONNECTORS_AMQP10_MAX_MESSAGE_SIZEspec.amqp10.maxMessageSizeint64; matches the AMQP 0.9.1 maxBodySize default (100 MB).
Session maxint256165535connectors.amqp10.sessionmax · CONNECTORS_AMQP10_SESSION_MAXspec.amqp10.sessionMax
Max links per sessionint2561connectors.amqp10.maxlinkspersession · CONNECTORS_AMQP10_MAX_LINKS_PER_SESSIONspec.amqp10.maxLinksPerSession
Max connectionsint10000 (0 = unlimited)connectors.amqp10.maxconnections · CONNECTORS_AMQP10_MAX_CONNECTIONSspec.amqp10.maxConnections0 = unlimited.
Idle timeout (s)int1200 (0 = disabled)connectors.amqp10.idletimeoutseconds · CONNECTORS_AMQP10_IDLE_TIMEOUT_SECONDSspec.amqp10.idleTimeoutSeconds0 = disabled.
Default patternenumqueuesqueues / events / events-store / commands / queriesconnectors.amqp10.defaultpattern · CONNECTORS_AMQP10_DEFAULT_PATTERNspec.amqp10.defaultPatternKubeMQ pattern mapped from AMQP addresses.
Get batch sizeint3211024connectors.amqp10.getbatchsize · CONNECTORS_AMQP10_GET_BATCH_SIZEspec.amqp10.getBatchSize
Max unsettled per linkint10241connectors.amqp10.maxunsettledperlink · CONNECTORS_AMQP10_MAX_UNSETTLED_PER_LINKspec.amqp10.maxUnsettledPerLink
Default RPC timeout (s)int301connectors.amqp10.defaultrpctimeoutseconds · CONNECTORS_AMQP10_DEFAULT_RPC_TIMEOUT_SECONDSspec.amqp10.defaultRpcTimeoutSeconds
RPC max pendingint5121connectors.amqp10.rpcmaxpending · CONNECTORS_AMQP10_RPC_MAX_PENDINGspec.amqp10.rpcMaxPending

AMQP 1.0 shares port 5672 (and TLS 5671) with AMQP 0.9.1. The two protocols are demultiplexed on a single shared listener, so running both on the default ports is fine. If you set a different port for one, keep the pair consistent so clients reach the listener you intend.

STOMP

The STOMP 1.0 / 1.1 / 1.2 wire protocol. Env prefix CONNECTORS_STOMP_*; CRD group spec.stomp.*.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.stomp.enable · CONNECTORS_STOMP_ENABLEspec.stomp.enabledOpt-in wire connector. Opens ports 61613/61614.
Portstring61613"" (disabled) or 165535connectors.stomp.port · CONNECTORS_STOMP_PORTspec.stomp.portPlaintext listener. String on the server ("" disables); the CRD takes an int32 (165535). Port must differ from TlsPort.
TLS portstring61614"" (disabled) or 165535connectors.stomp.tlsport · CONNECTORS_STOMP_TLS_PORTspec.stomp.tlsPortTLS listener. At least one of Port/TlsPort must be set.
Default patternenumeventsevents / queues / store / noneconnectors.stomp.defaultpattern · CONNECTORS_STOMP_DEFAULT_PATTERNspec.stomp.defaultPatternKubeMQ pattern for bare (prefixless) destinations.
Sub buffer sizeint100110000connectors.stomp.subbuffsize · CONNECTORS_STOMP_SUB_BUFF_SIZEspec.stomp.subBuffSizeEvents deliver-channel buffer.
Max connectionsint10000 (0 = unlimited)connectors.stomp.maxconnections · CONNECTORS_STOMP_MAX_CONNECTIONSspec.stomp.maxConnections0 = unlimited.
Max body size (bytes)int104857600> 0connectors.stomp.maxbodysize · CONNECTORS_STOMP_MAX_BODY_SIZEspec.stomp.maxBodySize
Heartbeat (ms)int100000 (0 = disabled)connectors.stomp.heartbeatms · CONNECTORS_STOMP_HEARTBEAT_MSspec.stomp.heartbeatMsAdvertised sx,sy; 0 disables the server side.
Queue ACK timeout (s)int30> 0connectors.stomp.queueacktimeoutseconds · CONNECTORS_STOMP_QUEUE_ACK_TIMEOUT_SECONDSspec.stomp.queueAckTimeoutSeconds
RPC timeout (s)int30> 0 (accepted; > 2147483 is clamped down)connectors.stomp.rpctimeoutseconds · CONNECTORS_STOMP_RPC_TIMEOUT_SECONDSspec.stomp.rpcTimeoutSecondsSilently clamped down to 2147483 (~24.8 days) if set higher, so timeout × 1000 cannot overflow the int32 RPC-bridge deadline.
RPC max pendingint1024> 0connectors.stomp.rpcmaxpending · CONNECTORS_STOMP_RPC_MAX_PENDINGspec.stomp.rpcMaxPendingIn-flight RPC cap.

Kafka

The embedded Kafka drop-in connector — KubeMQ speaks the native Kafka wire protocol, so real librdkafka/kcat/Java clients connect unchanged. Env prefix CONNECTORS_KAFKA_*; CRD group spec.kafka.*. As of v3.1 the connector is compiled into the default build (no build tag) and gated purely at runtime by Enable.

Eight fields are exposed as typed CRD fields (spec.kafka.*) — including the Service-exposure type; the remaining advanced knobs — fourteen scalars plus the six-field OAUTHBEARER block — are config.yaml/env-var-only (Helm/CRD path ) and were deliberately deferred from the CRD in v3.1 — set them via a mounted config file or a raw pod env var. The SASL credential store is secret/file-only (no env var, no CRD field).

See the Kafka connector overview and the migration guide for adoption planning, fitness assessment, and cutover tooling beyond this config reference.

Kafka requires the next storage engine — but it's zero-config. On a fresh store with Kafka enabled and Store.Engine unset, the server auto-selects next (a NOTICE is logged) — no manual store.engine=next step needed. It fails closed only when the store directory already holds legacy data (a config error naming the conflicting directory) or Store.Engine=legacy is set explicitly alongside Kafka. Pinning STORE_ENGINE=next skips the probe entirely and always wins. See Storage Engines.

Core (CRD-exposed) settings

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.kafka.enable · CONNECTORS_KAFKA_ENABLEspec.kafka.enabledOpt-in wire connector. Opens ports 9092/9093.
Portstring9092"" (disabled) or 165535connectors.kafka.port · CONNECTORS_KAFKA_PORTspec.kafka.portPlaintext listener. A TLS-only config (TlsPort set, Port empty) is rejected — the TLS accept path is not yet wired, so Port is currently required. Port must differ from TlsPort.
TLS portstring9093"" (disabled) or 165535connectors.kafka.tlsport · CONNECTORS_KAFKA_TLS_PORTspec.kafka.tlsPortReserved TLS listener (see the TLS-only note above).
Advertised hoststring""hostname / IPconnectors.kafka.advertisedhost · CONNECTORS_KAFKA_ADVERTISED_HOSTspec.kafka.advertisedHostThe single broker address handed to every client in Metadata/FindCoordinator. Set it to the external LoadBalancer DNS / NodePort IP (or the in-cluster Service DNS) — leaving it "" falls back to the server Host, then the pod hostname, which is unreachable off-pod (connect-then-hang). The TLS cert SAN must include this value.
Advertised portint0065535 (0 = use Port)connectors.kafka.advertisedport · CONNECTORS_KAFKA_ADVERTISED_PORTspec.kafka.advertisedPortThe external LB/NodePort port. 0 = fall back to Port on the config.yaml/env path. The CRD schema is stricter than the server: spec.kafka.advertisedPort enforces minimum: 1, so 0 is rejected on the typed CRD field even though the server itself accepts it.
Max connectionsint10000 (0 = unlimited)connectors.kafka.maxconnections · CONNECTORS_KAFKA_MAX_CONNECTIONSspec.kafka.maxConnections0 = unlimited.
Max message bytesint104857611073741824 (1 GiB)connectors.kafka.maxmessagebytes · CONNECTORS_KAFKA_MAX_MESSAGE_BYTESspec.kafka.maxMessageBytesPer-message cap (1 MiB default). Hard ceiling 1 GiB — Kafka frames are int32-length-prefixed, so a larger value would truncate.
Service exposurestring (enum)ClusterIPClusterIP / NodePort / LoadBalancer— (Docker: -p host port mapping)spec.kafka.exposeKubernetes Service type for the Kafka listener. Kafka also takes sessionAffinity, nodePort, and tlsNodePort — see Service exposure & session affinity, including the multi-replica addressing limit.

Advanced settings (config.yaml / env-var only — no CRD field)

These are on the configData allowlist (deferred from the CRD in v3.1). Every one has a working env var but no spec.kafka.* path — mount them via config file or a raw pod env var.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Max fetch wait (ms)int1000300000 (5 min)connectors.kafka.maxfetchwaitms · CONNECTORS_KAFKA_MAX_FETCH_WAIT_MSCeiling a client's fetch.max.wait.ms is clamped to. ≤ 0 falls back to the 1 s default; an over-ceiling value is rejected.
Timestamp typestringCreateTime"" / CreateTimeconnectors.kafka.timestamptype · CONNECTORS_KAFKA_TIMESTAMP_TYPELogAppendTime is rejected (deferred); any other value is rejected.
Offsets retention (min)int10080 (7 days)52560000 (100 yr)connectors.kafka.offsetsretentionminutes · CONNECTORS_KAFKA_OFFSETS_RETENTION_MINUTESCommitted-offset expiry. ≤ 0 is floored to the default (no "retain forever"); over-ceiling rejected.
Max groupsint1000010000000connectors.kafka.maxgroups · CONNECTORS_KAFKA_MAX_GROUPSCoordinator-wide consumer-group registry cap. ≤ 0 floored to default; over-ceiling rejected.
Max topics per requestint100001000000connectors.kafka.maxtopicsperrequest · CONNECTORS_KAFKA_MAX_TOPICS_PER_REQUESTPer-request distinct-topic cap (DoS fan-out guard). ≤ 0 floored; over-ceiling rejected.
Max partitions per requestint10000010000000connectors.kafka.maxpartitionsperrequest · CONNECTORS_KAFKA_MAX_PARTITIONS_PER_REQUESTPer-request distinct-partition cap. ≤ 0 floored; over-ceiling rejected.
SCRAM iterationsint40961000000connectors.kafka.scramiterations · CONNECTORS_KAFKA_SCRAM_ITERATIONSPBKDF2 iteration count for the SCRAM verifier. ≤ 0 floored to 4096 (RFC-7677 minimum); over-ceiling rejected.
SASL mechanismsstring[][] (offer PLAIN, SCRAM-SHA-256, SCRAM-SHA-512)subset of PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER (empty = offer the first three only)connectors.kafka.saslmechanisms · CONNECTORS_KAFKA_SASL_MECHANISMSEmpty = offer the first three (PLAIN, SCRAM-SHA-256, SCRAM-SHA-512). OAUTHBEARER is never part of the implicit default — it must be listed explicitly, and doing so requires OAuthBearer.Issuer set (see OAUTHBEARER authentication below). A non-empty allow-list restricts what SaslHandshake offers (e.g. SCRAM-only, dropping cleartext PLAIN); an unknown entry is rejected.
Produce byte rateint0 (unlimited)1099511627776 (1 TiB/s)connectors.kafka.producebyterate · CONNECTORS_KAFKA_PRODUCE_BYTE_RATEPer-principal produce quota (bytes/s). 0 = unlimited (ThrottleMillis=0). < 0 floored to 0; over-ceiling rejected.
Fetch byte rateint0 (unlimited)1099511627776 (1 TiB/s)connectors.kafka.fetchbyterate · CONNECTORS_KAFKA_FETCH_BYTE_RATEFetch-direction twin of the produce quota.
Max transaction timeout (ms)int900000 (15 min)86400000 (24 h)connectors.kafka.maxtransactiontimeoutms · CONNECTORS_KAFKA_MAX_TRANSACTION_TIMEOUT_MSCeiling on the transaction.timeout.ms a client negotiates. ≤ 0 floored; over-ceiling rejected.
Transactional ID expiration (ms)int64604800000 (7 days)3153600000000 (100 yr)connectors.kafka.transactionalidexpirationms · CONNECTORS_KAFKA_TRANSACTIONAL_ID_EXPIRATION_MSIdle-transactional.id reaper deadline. int64. ≤ 0 floored; over-ceiling rejected.
Max transactional IDsint1000010000000connectors.kafka.maxtransactionalids · CONNECTORS_KAFKA_MAX_TRANSACTIONAL_I_DSTxn-coordinator registry cap. Env-name trap (see callout). ≤ 0 floored; over-ceiling rejected.
Producer ID block sizeint10001000000connectors.kafka.produceridblocksize · CONNECTORS_KAFKA_PRODUCER_ID_BLOCK_SIZEProducer-ID allocation block. ≤ 0 floored; over-ceiling rejected.
Produce pipeline depthint515connectors.kafka.producepipelinedepth · CONNECTORS_KAFKA_PRODUCE_PIPELINE_DEPTHPer-partition in-flight produce batches. 5 matches Kafka's idempotent in-flight cap, and is the hard ceiling — above it the broker cannot de-duplicate on replay, so it is rejected. 1 is serial behavior, the emergency rollback. < 1 is floored to 1 (the safe side), not to the default. Worst-case memory is depth × maxMessageBytes held per hot partition.
Per-broker peer mapstring""id@host:port,…connectors.kafka.peers · CONNECTORS_KAFKA_PEERSThe clustered per-broker client-reachable advertised addresses, same grammar as the replication peer map. The id is the peer's raft replica id (= its Kafka broker node id). Meaningful only when Kafka is enabled on a clustered next cluster — setting it while the connector is on but the cluster is not is rejected. A peer's Kafka address must never equal that same id's raft address; that paste mistake is rejected, since clients would otherwise hammer the replication listener. See the multi-replica exposure callout.
SASL credentialsstruct[]list of {username, password}connectors.kafka.credentials (config file / secret only)Secret — no env var, no CRD field. SASL/PLAIN + SCRAM user store; when non-empty, SASL auth is enforced on every listener. Validate() rejects empty or duplicate usernames, empty passwords, and a username matching the reserved internal dashboard identity. Passwords are redacted in logs.

Kafka env-var trap: CONNECTORS_KAFKA_MAX_TRANSACTIONAL_I_DS. The MaxTransactionalIDs field renders to ..._MAX_TRANSACTIONAL_I_DS (an extra underscore before DS), not the intuitive ..._MAX_TRANSACTIONAL_IDS. The wrong form does not bind and is silently ignored. All other Kafka names follow the normal CONNECTORS_KAFKA_* rule.

Kafka SASL credentials

Kafka SASL credentials are secret/file-only. Unlike AWS, there is no CredentialsData env-var escape hatch and no CRD field — supply the credentials list through a mounted config.yaml (or Secret-mounted file). On Kubernetes the delivery mechanism is spec.envFromSecrets, which projects an existing Secret into the pod without the values transiting the operator. Plan the credential delivery path before enabling SASL on Kubernetes.

OAUTHBEARER authentication

OAUTHBEARER activates when OAuthBearer.Issuer is non-empty — there is no separate enable flag. It is enforced only on the TLS/SASL_SSL listener (TlsPort); like the advanced knobs above, it is config.yaml/env-var-only (Helm/CRD path , not a CRD field).

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Issuerstring""non-empty to activate; else OAUTHBEARER stays offconnectors.kafka.oauthbearer.issuer · CONNECTORS_KAFKA_OAUTH_BEARER_ISSUER (alias of CONNECTORS_KAFKAO_AUTH_BEARER_ISSUER)Non-empty requires a non-empty TlsPort — a bearer token must not cross a plaintext transport.
Client IDstring""required unless Skip client-ID check is trueconnectors.kafka.oauthbearer.clientid (by convention) · CONNECTORS_KAFKA_OAUTH_BEARER_CLIENT_IDThe OIDC audience. Enforced only when Issuer is set.
Skip client-ID checkboolfalsetrue / falseconnectors.kafka.oauthbearer.skipclientidcheck (by convention) · CONNECTORS_KAFKA_OAUTH_BEARER_SKIP_CLIENT_ID_CHECKThe one skip-flag Kafka permits as true — some IdPs legitimately omit or vary the audience claim.
Skip expiry checkboolfalsemust stay falseconnectors.kafka.oauthbearer.skipexpirycheck (by convention) · CONNECTORS_KAFKA_OAUTH_BEARER_SKIP_EXPIRY_CHECKtrue is hard-rejected on the Kafka listener — stricter than the generic OIDC authentication path, which only warns.
Skip issuer checkboolfalsemust stay falseconnectors.kafka.oauthbearer.skipissuercheck (by convention) · CONNECTORS_KAFKA_OAUTH_BEARER_SKIP_ISSUER_CHECKtrue is hard-rejected — it would accept tokens from any issuer.
Insecure skip signature checkboolfalsemust stay falseconnectors.kafka.oauthbearer.insecureskipsignaturecheck (by convention) · CONNECTORS_KAFKA_OAUTH_BEARER_INSECURE_SKIP_SIGNATURE_CHECKtrue is hard-rejected — it would accept forged/unsigned tokens.

Both OAUTHBEARER env forms work — use the readable one. The generic snake-caser fuses Kafka and OAuthBearer into one word and produces the unguessable CONNECTORS_KAFKAO_AUTH_BEARER_*. Because nobody can guess that, the server also binds the natural CONNECTORS_KAFKA_OAUTH_BEARER_* form deliberately, and both resolve to the same setting. Prefer the natural form:

CONNECTORS_KAFKA_OAUTH_BEARER_ISSUER=https://idp.example.com
CONNECTORS_KAFKA_OAUTH_BEARER_CLIENT_ID=kubemq

One caveat: the server's unknown-variable warner does not know about the alias, so setting the natural form prints an IGNORED warning even though the value is applied. The warning is wrong. Do not "fix" a working issuer because of it — confirm the effective value in the dashboard instead.

Skip-flags are hard-rejected on Kafka, not just warned. Setting Insecure skip signature check, Skip issuer check, or Skip expiry check to true on the Kafka listener is rejected outright by Validate() — stricter than the generic OIDC authentication path, which only warns. Skip client-ID check is the one permitted skip. (OAuthBearer.Issuer also requires a non-empty TlsPort — see the Issuer row above.)

AWS

The AWS SQS/SNS-compatible connector. Env prefix CONNECTORS_AWS_*; CRD group spec.aws.*.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.aws.enable · CONNECTORS_AWS_ENABLEspec.aws.enabledOpt-in wire connector. Opens port 4566.
Portstring4566165535connectors.aws.port · CONNECTORS_AWS_PORTspec.aws.portRejected if it collides with the gRPC/REST/HTTP or GCP listener port.
Regionstringkubemqnon-emptyconnectors.aws.region · CONNECTORS_AWS_REGIONspec.aws.region
Account IDstring000000000000^[0-9]{12}$connectors.aws.accountid · CONNECTORS_AWS_ACCOUNT_IDspec.aws.accountIdExactly 12 digits.
Advertised URLstring"""" or scheme://host[:port]connectors.aws.advertisedurl · CONNECTORS_AWS_ADVERTISED_URLspec.aws.advertisedUrlRejected unless it parses with a scheme and host.
Max inflight per queueint20000110000000connectors.aws.maxinflightperqueue · CONNECTORS_AWS_MAX_INFLIGHT_PER_QUEUEspec.aws.maxInflightPerQueueOver-ceiling rejected (OOM guard).
Max concurrent pollsint102411000000connectors.aws.maxconcurrentpolls · CONNECTORS_AWS_MAX_CONCURRENT_POLLSspec.aws.maxConcurrentPollsOver-ceiling rejected.
Read timeout (s)int6013600connectors.aws.readtimeout · CONNECTORS_AWS_READ_TIMEOUTspec.aws.readTimeoutPer-action sync deadline; over-ceiling rejected.
Body limitstring2Msize stringconnectors.aws.bodylimit · CONNECTORS_AWS_BODY_LIMITspec.aws.bodyLimit
Message signingboolfalsetrue / falseconnectors.aws.messagesigning · CONNECTORS_AWS_MESSAGE_SIGNINGspec.aws.messageSigningSign SNS Notification / SubscriptionConfirmation envelopes (SigV2).
Signing cert TTL (h)int87601connectors.aws.signingcertttlhours · CONNECTORS_AWS_SIGNING_CERT_TTL_HOURSspec.aws.signingCertTtlHoursSelf-signed signing-cert validity (default 365 days). Applies when message signing is on.
Credentials (data blob)string""JSON or base64-of-JSON credential arrayconnectors.aws.credentialsdata · CONNECTORS_AWS_CREDENTIALS_DATAspec.aws.credentialsDataSigV4 credential array. On Helm/CRD this is rendered into a Kubernetes Secret (not a plain ConfigMap).
Credentials (structured)struct[]list of {accessKeyId, secretAccessKey, clientID}connectors.aws.credentials (config file only)No env var, no CRD field. File/structured-only credential list; the env/CRD path is credentialsData. Empty or duplicate accessKeyId is rejected; clientID defaults to accessKeyId.

AWS credentials go through a Secret, not a plain CRD value. The spec.aws.credentialsData field exists but the operator writes it into a Kubernetes Secret (CONNECTORS_AWS_CREDENTIALS_DATA), never a ConfigMap. On Docker, set connectors.aws.credentialsdata (JSON or base64-of-JSON) or the CONNECTORS_AWS_CREDENTIALS_DATA env var. The fully-structured connectors.aws.credentials list is config-file-only and has no env/CRD route.

GCP Pub/Sub

The Google Cloud Pub/Sub emulator connector (gRPC). Env prefix CONNECTORS_GCP_*; CRD group spec.gcp.*.

SettingTypeDefaultValid valuesDocker (config.yaml key · env var)Helm/CRD pathNotes
Enableboolfalse (opt-in)true / falseconnectors.gcp.enable · CONNECTORS_GCP_ENABLEspec.gcp.enabledOpt-in wire connector. Opens port 8085.
Portstring8085165535connectors.gcp.port · CONNECTORS_GCP_PORTspec.gcp.portgRPC listener (Pub/Sub emulator convention). Rejected if it collides with the gRPC/REST/HTTP or AWS listener port.
Advertised endpointstring""endpointconnectors.gcp.advertisedendpoint · CONNECTORS_GCP_ADVERTISED_ENDPOINTspec.gcp.advertisedEndpointEndpoint advertised to clients.
Max message bytesint10485760 (10 MiB)11073741824 (1 GiB)connectors.gcp.maxmessagebytes · CONNECTORS_GCP_MAX_MESSAGE_BYTESspec.gcp.maxMessageBytesFeeds the gRPC frame ceiling (value + 1 MiB); hard cap 1 GiB.
Default ack deadline (s)int1010600connectors.gcp.defaultackdeadlineseconds · CONNECTORS_GCP_DEFAULT_ACK_DEADLINE_SECONDSspec.gcp.defaultAckDeadlineSeconds
Max outstanding messagesint1000> 0connectors.gcp.maxoutstandingmessages · CONNECTORS_GCP_MAX_OUTSTANDING_MESSAGESspec.gcp.maxOutstandingMessages
Max inflight per subscriptionint20000> 0connectors.gcp.maxinflightpersubscription · CONNECTORS_GCP_MAX_INFLIGHT_PER_SUBSCRIPTIONspec.gcp.maxInflightPerSubscription
Max concurrent pollsint1024> 0connectors.gcp.maxconcurrentpolls · CONNECTORS_GCP_MAX_CONCURRENT_POLLSspec.gcp.maxConcurrentPolls
Max concurrent streamsint10240 (default) or 165536connectors.gcp.maxconcurrentstreams · CONNECTORS_GCP_MAX_CONCURRENT_STREAMSspec.gcp.maxConcurrentStreamsPer-server cap on concurrent StreamingPull streams. 0 = use the built-in default (1024).
Delivery shardsint161256connectors.gcp.deliveryshards · CONNECTORS_GCP_DELIVERY_SHARDSspec.gcp.deliveryShardsStriped delivery-pool shards.
Max ack extension (s)int6000 (disabled) or 103600connectors.gcp.maxackextensionseconds · CONNECTORS_GCP_MAX_ACK_EXTENSION_SECONDSspec.gcp.maxAckExtensionSeconds0 disables the ordered-head ack-deadline keep-alive.
Stream close (s)int1800> 0connectors.gcp.streamcloseseconds · CONNECTORS_GCP_STREAM_CLOSE_SECONDSspec.gcp.streamCloseSeconds
Max seek replayint1000000> 0connectors.gcp.maxseekreplay · CONNECTORS_GCP_MAX_SEEK_REPLAYspec.gcp.maxSeekReplay
Enable reflectionboolfalsetrue / falseconnectors.gcp.enablereflection · CONNECTORS_GCP_ENABLE_REFLECTIONspec.gcp.enableReflectiongRPC server reflection.

Enable GCP Pub/Sub explicitly. A stock kubemq-server does not bind port 8085 until you set CONNECTORS_GCP_ENABLE=true (Docker) or spec.gcp.enabled: true (Kubernetes). Point clients at the connector with PUBSUB_EMULATOR_HOST=localhost:8085 — no auth, no TLS (emulator mode).

Was this page helpful?

On this page