Skip to main content
Version: 4.0.0-incubating

Tenant-level Settings

Tenant-level settings allow for detailed control of BifroMQ's functionality and performance characteristics. Each setting can be adjusted per tenant, enabling customized behavior according to the specific requirements and preferences of each tenant. This granularity ensures that BifroMQ can cater to a wide variety of use cases and operational environments.

Initial Value Adjustment

Initial values for these settings can be adjusted through JVM startup parameters. This allows for system-wide default adjustments before runtime customization per tenant. For example, to disable MQTT version 3.1 client connections by default, you can start the JVM with the parameter -DMQTT3Enabled=false. This level of control provides the flexibility to optimize the broker's behavior based on the deployment context and operational requirements.

Customization through Setting Provider Plugins

The management responsibility of tenant settings is inverted, meaning it is implemented by the business side. Customization and runtime adjustment of these settings are achieved through the development and integration of custom Setting Provider plugins. This approach allows businesses to dynamically adjust settings in response to changing operational conditions, regulatory requirements, or specific business logic, enhancing the adaptability and scalability of BifroMQ deployments.

Supported Settings

NameTypeInitial ValueDescription
MQTT3EnabledBooleantrueEnables or disables MQTT v3.1 support.
MQTT4EnabledBooleantrueEnables or disables MQTT v3.1.1 support.
MQTT5EnabledBooleantrueEnables or disables MQTT v5.0 support.
NoLWTWhenServerShuttingDownBooleantrueSuppresses Last Will delivery when the server is shutting down.
DebugModeEnabledBooleanfalseEnables or disables debug mode.
ForceTransientBooleanfalseForces transient mode for connections.
ByPassPermCheckErrorBooleantrueBypasses permission check errors.
PayloadFormatValidationEnabledBooleantrueEnables or disables payload format validation.
RetainEnabledBooleantrueEnables or disables message retain feature.
WildcardSubscriptionEnabledBooleantrueEnables or disables wildcard subscriptions.
SubscriptionIdentifierEnabledBooleantrueEnables or disables subscription identifiers.
SharedSubscriptionEnabledBooleantrueEnables or disables shared subscriptions.
MaximumQoSInteger2Maximum QoS level. Valid values: 0, 1, 2.
MaxTopicLevelLengthInteger40Maximum length of each topic level (> 0).
MaxTopicLevelsInteger16Maximum number of topic levels (> 0).
MaxTopicLengthInteger255Maximum total topic length (< 65536).
MaxTopicAliasInteger10Maximum number of topic aliases (< 65536).
MaxSharedGroupMembersInteger200Maximum members in a shared subscription group (> 0).
MaxTopicFiltersPerInboxInteger100Maximum topic filters per inbox (> 0).
MsgPubPerSecInteger200Maximum publishes per second per connection (> 0, ≤ 1000).
ReceivingMaximumInteger200Maximum in-flight QoS 1/2 messages per connection (> 0, ≤ 65535).
InBoundBandWidthLong512 * 1024LMaximum inbound bandwidth per connection in bytes (≥ 0).
OutBoundBandWidthLong512 * 1024LMaximum outbound bandwidth per connection in bytes (≥ 0).
MaxLastWillBytesInteger128Maximum Last Will payload size in bytes (> 0, ≤ 250 * 1024 * 1024).
MaxUserPayloadBytesInteger256 * 1024Maximum user payload size in bytes (> 0, ≤ 256 * 1024 * 1024).
MinSendPerSecInteger8Minimum allowed publishes per second per connection (> 0).
MaxResendTimesInteger3Maximum resend attempts for QoS 1/2 messages (≥ 0).
ResendTimeoutSecondsInteger10Timeout in seconds before a message is considered for resend (> 0).
MaxTopicFiltersPerSubInteger10Maximum topic filters per subscription (> 0, ≤ 100).
MaxGroupFanoutInteger100Maximum fanout for group deliveries (> 0).
MaxPersistentFanoutIntegerInteger.MAX_VALUEMaximum persistent fanout concurrency (> 0).
MaxPersistentFanoutBytesLongLong.MAX_VALUEMaximum bytes allowed for persistent fanout (> 0).
MaxSessionExpirySecondsInteger24 * 60 * 60Maximum session expiry time in seconds (> 0, ≤ 0xFFFFFFFF).
MinSessionExpirySecondsInteger60Minimum session expiry time in seconds (> 0, ≤ MaxSessionExpirySeconds).
MinKeepAliveSecondsInteger60Minimum keep alive in seconds (> 0, < 65535).
SessionInboxSizeInteger1000Maximum size of session inbox (> 0, ≤ 65535).
QoS0DropOldestBooleanfalseWhether to drop the oldest QoS 0 messages first.
RetainMessageMatchLimitInteger10Limit for retained message matches (≥ 0).