Vulture/VNode/_software_lib/nanomq-0.22.10/config/nanomq_bridge.conf

400 lines
13 KiB
Plaintext
Raw Normal View History

# #====================================================================
# # MQTT Broker Bridge
# #====================================================================
bridges.mqtt.emqx1 {
# # Bridge address: host:port .
# #
# # Value: String
# # Example: mqtt-tcp://127.0.0.1:1883
# # tls+mqtt-tcp://127.0.0.1:8883
# # mqtt-quic://54.75.171.11:14567
server = "mqtt-tcp://127.0.0.1:1883"
# # Protocol version of the bridge.
# #
# # Value: Enum
# # - 5: mqttv5
# # - 4: mqttv311
# # - 3: mqttv31
proto_ver = 4
# # The ClientId of a remote bridge.
# # Default random string.
# #
# # Value: String
# clientid="bridge_client"
# # Ping: interval of a downward bridge.
# #
# # Value: Duration
# # Default: 10 seconds
keepalive = 60s
# # The maximum backoff timeout.
# # Reconnect after no more than backoff_max when bridge connection lost.
# #
# # Value: Duration
# # Default: 60s
backoff_max = 60s
# # The Clean start flag of a remote bridge.
# #
# # Value: boolean
# # Default: false
# #
# # NOTE: Some IoT platforms require clean_start
# # must be set to 'true'
clean_start = false
# # The username for a remote bridge.
# #
# # Value: String
username = username
# # The password for a remote bridge.
# #
# # Value: String
password = passwd
# # Properties for MQTT V5
conn_properties = {
# # Maximum Packet Size
# #
# # If the Maximum Packet Size is not present, no limit on the packet size is imposed beyond
# # the limitations in the protocol as a result of the remaining length encoding and the protocol header sizes.
# # Value: 1 ~ 4294967295
maximum_packet_size = 1024
# # Receive Maximum
# #
# # The Client uses this value to limit the number of QoS 1 and QoS 2 publications that it is willing to process concurrently.
# # There is no mechanism to limit the QoS 0 publications that the Server might try to send.
# # The value of Receive Maximum applies only to the current Network Connection.
# # If the Receive Maximum value is absent then its value defaults to 65,535.
# #
# # Value: 1 ~ 65535
receive_maximum = 65535
# # Topic Alias Maximum
# #
# # If the Topic Alias Maximum property is absent, the default value is 0.
# # This value indicates the highest value that the Client will accept as a Topic Alias sent by the Server.
# # The Client uses this value to limit the number of Topic Aliases that it is willing to hold on this Connection.
# # Default: 0
# # Value: 0 ~ 65535
topic_alias_maximum = 0
# # Request Problem Information
# #
# # If the Request Problem Information is absent, the value of 1 is used.
# # The Client uses this value to indicate whether the Reason String or User Properties are sent in the case of failures.
# # If the value of Request Problem Information is 0, the Server MAY return a Reason String or User Properties on a CONNACK or DISCONNECT packet,
# # but MUST NOT send a Reason String or User Properties on any packet other than PUBLISH, CONNACK, or DISCONNECT.
# # If the value is 0 and the Client receives a Reason String or User Properties in a packet other than PUBLISH, CONNACK, or DISCONNECT,
# # it uses a DISCONNECT packet with Reason Code 0x82 (Protocol Error) as described in section 4.13 Handling errors.
# # If this value is 1, the Server MAY return a Reason String or User Properties on any packet where it is allowed.
# #
# # Default: 1
# # Value: 0 | 1
request_problem_infomation = 1
# # Request Response Information
# #
# # If the Request Response Information is absent, the value of 0 is used.
# # The Client uses this value to request the Server to return Response Information in the CONNACK.
# # A value of 0 indicates that the Server MUST NOT return Response Information.
# # If the value is 1 the Server MAY return Response Information in the CONNACK packet.
# #
# # Default: 0
# # Value: 0 | 1
request_response_infomation = 0
# # Session Expiry Interval
# #
# # If the Session Expiry Interval is absent the value 0 is used.
# # If it is set to 0, or is absent, the Session ends when the Network Connection is closed.
# # If the Session Expiry Interval is 4294967295 (UINT_MAX), the Session does not expire.
# #
# # Value: 0 ~ 4294967295
session_expiry_interval = 0
# # User Property
# #
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
# # The same name is allowed to appear more than once.
# # Value: Map[key(String) - value(String)]
user_property = {
key1 = value1
key2 = value2
}
}
will {
# # Will topic
topic = "will_topic"
# # Will QoS
qos = 1
# # Will paylad retain flag
retain = false
# # Will payload
payload = "will_message"
# # Will properties
properties = {
# # Payload Format Indicator
# #
# # 0 (0x00) Byte Indicates that the Will Message is unspecified bytes,
# # which is equivalent to not sending a Payload Format Indicator.
# #
# # 1 (0x01) Byte Indicates that the Will Message is UTF-8 Encoded Character Data.
# #
# # Default: 0
# # Value: 0 | 1
payload_format_indicator = 0
# # Message Expiry Interval
# #
# # If present, the Four Byte value is the lifetime of the Will Message in seconds
# # and is sent as the Publication Expiry Interval when the Server publishes the Will Message.
# #
# # If absent, no Message Expiry Interval is sent when the Server publishes the Will Message.
message_expiry_interval = 0
# # Content Type
# # The value of the Content Type is defined by the sending and receiving application.
content_type = ""
# # Response Topic
# # The presence of a Response Topic identifies the Will Message as a Request.
response_topic = ""
# # Correlation Data
# # The Correlation Data is used by the sender of the Request Message to identify which request
# # the Response Message is for when it is received.
correlation_data = ""
# # Will Delay Interval
# #
# # If the Will Delay Interval is absent, the default value is 0 and there is no delay
# # before the Will Message is published.
# #
# # The Server delays publishing the Clients Will Message until the Will Delay Interval
# # has passed or the Session ends, whichever happens first.
# # If a new Network Connection to this Session is made before the Will Delay Interval has passed, the Server MUST NOT send the Will Message
will_delay_interval = 0
# # User Property
# #
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
# # The same name is allowed to appear more than once.
# # Value: Map[key(String) - value(String)]
user_property = {
key1 = value1
key2 = value2
}
}
}
# # Ssl config ##
# # Ssl config is invalid when working in MQTT over QUIC mode ##
# ssl {
# # # Ssl key password
# # # String containing the user's password. Only used if the private keyfile
# # # is password-protected.
# # #
# # # Value: String
# # # key_password = "yourpass"
# # # Ssl keyfile
# # # Path of the file containing the client's private key.
# # #
# # # Value: File
# keyfile = "../etc/certs/key.pem"
# # # Ssl cert file
# # # Path of the file containing the client certificate.
# # #
# # # Value: File
# certfile = "../etc/certs/cert.pem"
# # # Ssl ca cert file
# # # Path of the file containing the server's root CA certificate.
# # #
# # # This certificate is used to identify the AWS IoT server and is publicly
# # # available.
# # #
# # # Value: File
# cacertfile = "../etc/certs/cacert.pem"
# }
# # Topics that need to be forward to IoTHUB
# #
# # Value: String
# # Example: topic1/#,topic2/#
forwards = [
{
# # Need to forward to remote broker topics
# #
# # Value: String
remote_topic = "fwd/topic1"
# # topic reflection with remote_topic
# #
# # Value: String
local_topic = "topic1"
}
{
remote_topic = "fwd/topic2"
local_topic = "topic2"
}
]
# #--------------------------------------------------------------------
# # The following config params only effective when set QUIC as the
# # transport layer of bridging connection (mqtt-quic://{host}:{port})!
# #
# # Ping: interval of a sending keepalive packet via QUIC transport.
# #
# # Value: Duration
# # Default: 120 seconds
quic_keepalive = 120s
# # Idle Timeout: How long a connection can go idle before it is gracefully shut down.
# # 0 to disable timeout, which may lost disconnect event msg.
# # Value: Duration
# # Default: 120 seconds
quic_idle_timeout = 120s
# # Disconnect Timeout: How long to wait for an ACK before declaring
# # a path dead and disconnecting, This affects stream living time.
# # Value: Duration
# # Default: 20 seconds
quic_discon_timeout = 20s
# # Handshake Timeout: the Max time NanoMQ waits for establishing QUIC connection
# # How long a handshake can idle before it is discarded
# # Value: Duration
# # Default: 60 seconds
quic_handshake_timeout = 60s
# # Send Idle Timeout: Reset congestion control after being idle `SendIdleTimeout`
# # Value: Duration
# # Default: 60 seconds
quic_send_idle_timeout = 2s
# # Initial RTT: Initial RTT estimate. (ms)
# # RTT: round trip time
# # Default: 800ms
quic_initial_rtt_ms = 800ms
# # Max Ack Delay: How long to wait after receiving data before sending an ACK.
# # Value: Duration
# # Default: 100ms
quic_max_ack_delay_ms = 100ms
# # multi-stream mode: enable or disable the multi-stream bridging mode
# # Warning: This is a feature WIP. Do not enable it!
# # Value: True/False
# # Default: False
quic_multi_stream = false
# # qos_priority: send QoS 1/2 msg in high prority
# # QoS 0 messages remain as same
# # Value: true/false
# # Default: true
quic_qos_priority = true
# # 0RTT: enable or diable 0RTT, 0RTT is a feature of QUIC to re-establish
# # connection quickly.
# # Value: true/false
# # Default: true
quic_0rtt = true
subscription = [
{
# # The topic filter of which subscribe to remote broker
# # This must present to enable the subscription of bridging
# #
# # Value: String
remote_topic = "cmd/topic3"
# # This is for Topic reflection, if you want the vanila way:
# # Leave `local_topic=""` to preserve the original topic in msg
# # Value: String
local_topic = "topic3"
# # Need to subscribe to remote topics QoS.
# # Please set QoS for each subscription topic
# # otherwise topic is invalid, NanoMQ won't sub to any topic
# # Value: Number
qos = 1
}
{
remote_topic = "cmd/topic4"
local_topic = "topic4"
qos = 2
}
]
# # Properties of subscribe for MQTT V5
sub_properties {
# # Subscription Identifier
# #
# # The Subscription Identifier can have the value of 1 to 268,435,455.
# # It is a Protocol Error if the Subscription Identifier has a value of 0.
# # It is a Protocol Error to include the Subscription Identifier more than once.
# # The Subscription Identifier is associated with any subscription created or modified as the result of this SUBSCRIBE packet.
# # If there is a Subscription Identifier, it is stored with the subscription.
# # If this property is not specified, then the absence of a Subscription Identifier is stored with the subscription.
# #
# # Value: 1 ~ 268,435,455
identifier = 1
# # User Property
# #
# # The User Property is allowed to appear multiple times to represent multiple name, value pairs.
# # The same name is allowed to appear more than once.
# #
# # Value: Map[key(String) - value(String)]
user_property = {
key1 = value1
key2 = value2
}
}
# # Hybrid bridging: enable or disable the hybrid bridging mode
# # Value: True/False
# # Default: False
hybrid_bridging = false
# # Hybrid servers
# # When hybrid mode is enabled and the connection to server is
# # disconnected. Bridge will switch to hybrid_servers in roundrobin.
# # Value: Array
# # Default: []
hybrid_servers = ["mqtt-quic://127.1:14567", "mqtt-tcp://127.1:1883"]
# # max_parallel_processes
# # Handle a specified maximum number of outstanding requests
# #
# # Value: 1-infinity
max_parallel_processes = 2
# # max send queue length
# # Handle a specified maximum number of message send queue length
# #
# # Value: 1-infinity
max_send_queue_len = 32
# # max receive queue length
# # Handle a specified maximum number of message receive queue length
# #
# # Value: 1-infinity
max_recv_queue_len = 128
}
bridges.mqtt.cache {
# # Max message limitation for caching
# # ( 0 means ineffective )
# # Value: 1-infinity
disk_cache_size = 102400
# # Mounted file path
# #
# # Value: path
# mounted_file_path="/tmp/"
# # The threshold of flushing messages to flash.
# #
# # Value: 1-infinity
flush_mem_threshold = 100
# # Resend interval (ms)
# # The interval for resending the messages after failure recovered. (not related to trigger)
# #
# # Value: 1-infinity
resend_interval = 5000
}