Skip to main content
Version: Next (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 version 3.1 support.
MQTT4EnabledBooleantrueEnables or disables MQTT version 3.1.1 support.
MQTT5EnabledBooleantrueEnables or disables MQTT version 5.0 support.
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.
MaximumQoSInteger2Sets the maximum QoS level. Valid values: 0, 1, 2.
MaxTopicLevelLengthInteger40Maximum length of each topic level.
MaxTopicLevelsInteger16Maximum number of topic levels.
MaxTopicLengthInteger255Maximum total length of a topic.
MaxTopicAliasInteger10Maximum number of topic aliases.
MaxSharedGroupMembersInteger200Maximum members in a shared subscription group.
MaxTopicFiltersPerInboxInteger100Maximum topic filters per inbox.
MsgPubPerSecInteger200Maximum number of messages published per second per connection.
ReceivingMaximumInteger200Maximum number of receiving messages per second per connection.
InBoundBandWidthLong512 * 1024LMaximum inbound bandwidth in bytes per connection.
OutBoundBandWidthLong512 * 1024LMaximum outbound bandwidth in bytes per connection.
MaxUserPayloadBytesInteger256 * 1024Maximum user payload size in bytes.
MaxResendTimesInteger3Maximum times a message can be resent when qos is 1 or 2.
ResendTimeoutSecondsInteger10Timeout in seconds before a message is considered for resend.
MaxTopicFiltersPerSubInteger10Maximum topic filters per subscription.
MaxSessionExpirySecondsInteger24 * 60 * 60Maximum session expiry time in seconds.
SessionInboxSizeInteger1000Maximum size of session inbox.
QoS0DropOldestBooleanfalseWhether to drop the oldest QoS 0 messages first.
RetainMessageMatchLimitInteger10Limit for retained message matches.