
本文共 6367 字,大约阅读时间需要 21 分钟。
配置 Bridges
可以使用下面的选项配置多个bridges (连接到其他brokers).
Bridges不能通过 reload signal重新加载.
address
address[:port]
[address[:port]]
,addresses
address[:port]
[address[:port]]
配置bridge连接的地址和端口号,端口号是可选的。每一个bridge连接都需要配置.如果不指定端口,默认使用1883 .
如果使用 IPv6 地址,端口号必须配置.
可以配置多个地址。参见 round_robin
选项来了解配置多个地址时的行为。
bridge_attempt_unsubscribe
[ true | false ]
如果bridge的topics有“out”的方向,默认行为是发送unsubscribe 请求到远端broker。这意味着更改topic的方向从”in”到”out”后将不会再收到incoming的消息。 发送 unsubscribe 请求并不总是需要的, 设置 bridge_attempt_unsubscribe
为 false
将会关闭发送unsubscribe 请求的功能. 默认为 true
.
bridge_protocol_version
version
设置bridge支持的MQTT协议的版本。可以是mqttv31
或者 mqttv311
. 默认是 mqttv31
.
cleansession
[ true | false ]
配置bridge是否要清理会话 ,默认为false。False表示当网络连接断掉后远端broker上的订阅仍然保留;true表示如果连接断掉远端broker上的订阅和消息会被清除。注意的是,设为true,每次bridge重连时会导致大量保留消息的重发。
cleansession
为 false
(the default), 如果你改变了订阅的topic,对进来的topic消息,你可能会得到不期望的行为。这时因为远端broker仍然保留订阅的老的topic。如果遇到这个问题,你可以连接bridge用cleansession
为true, 然后再重连bridge用cleansession 为false。
connection
name
作为新bridge连接的标记,它也可以用来在远端broker给bridge一个名字作为client id。.
keepalive_interval
seconds
设置时间间隔,当没有消息发送多长时间后bridge需要发送一个ping。默认为60秒. 允许的最小值为5秒.
idle_timeout
seconds
使用lazy 启动方式的bridge 在退出之前必须空闲等待的时间。默认为 60 秒.
local_clientid
id
设置本地broker的clientid. 如果不配置,默认为 local.<remote_clientid>
. 如果bridge一个broker到他本身,需要确保local_clientid和 remote_clientid 不一样.
local_password
password
设置连接bridge到本地broker时使用的密码。当使用认证和访问控制时,这个很重要。
local_username
username
设置连接bridge到本地broker时使用的用户名。当使用认证和访问控制时,这个很重要。
notifications
[ true | false ]
设为true时,会发布关于bridge连接的状态信息到本地和远端的brokerIf 。保留的消息发布到$SYS/broker/connection/<remote_clientid>/state topic,除非设置了 notification_topic
. 如果消息为 1 表示连接正常, 0表示连接失败. 默认为 true
.
此选项使用 Last Will and Testament (LWT) 功能.
notifications_local_only
[ true | false ]
若为 true
, 只发布bridge连接信息到本地broker,默认为 false
.
notification_topic
topic
选择通知发送到的topic. 如果不设置,将会发送到$SYS/broker/connection/<remote_clientid>/state.
remote_clientid
id
设置此bridge连接的client id. 如果不设置,默认为 'name.hostname', name为连接的名字,hostname 为本机的hostname.
此项取代老的 "clientid" 选项 以避免混淆本地和远端的bridge。"clientid" 选项暂时还有效。
remote_password
value
为bridge配置密码。当连接到MQTT v3.1及以上的broker时,如果需要用户名和密码,此选项有用。只有当remote_username也配置时,此配置项才有效。
代替老的 "password" 选项以避免混淆本地和远端的bridge。" password " 选项暂时还有效。
remote_username
name
配置bridge的username. 当连接到MQTT v3.1及以上的broker时,如果需要用户名和密码,此选项有用. 参见 remote_password
选项.
代替老的 "username" 选项以避免混淆本地和远端的bridge. "username" 选项暂时还有效.
restart_timeout
base cap
,restart_timeout
constant
自动启动的bridge在尝试重连之前的等待时间。
可以配置为延时的秒数;也可以使用"Decorrelated Jitter"的backoff机制:加入一个随机度,当启动的时候以base为基础增加到cap。
例如:
restart_timeout 20
restart_timeout 10 30
默认base 为5秒, cap为30秒
round_robin
[ true | false ]
如果bridge配置了多个地址, round_robin 选项定义了bridge连接失败时的处理行为:为 false
,也是默认值, 则第一个地址为主连接,如果连接失败,其他的secondary地址按顺序尝试。连接到secondary地址的同时,bridge会周期性的尝试连接主bridge,直到成功。
如果为 true
, 所有的地址时平等的. 如果连接失败,会选择下一个地址,成功之后会一直使用这个连接,知道失败为止。
start_type
[ automatic | lazy | once ]
设置bridge的启动方式。
可选的方式为: automatic
, lazy
and once
. RSMB提供第四种方式"manual" , mosquitto当前不支持.
automatic
:默认启动方式,broker启动时bridge连接自动建立,如果连接失败,等待30秒后会自动重启。
lazy
:当缓存的消息数量超过threshold
选项配置的值时,会自动启动。超过idle_timeout
配置的值后,会停止自动启动。如果你希望连接只在需要的时候启动,可以选择这种方式。
once
:broker启动时自动启动,连接失败之后不自动重启。
threshold
count
lazy方式启动的bridge需要缓存的消息数。 默认为 10 条消息。
topic
pattern
[[[ out | in | both ] qos-level] local-prefix remote-prefix]
定义在两个broker间共享的topic格式。任何匹配这种格式的topic都是共享的,可以包含模式匹配符。第二个参数定义了消息共享的方式, in: 从远端broker引入消息;out:输出消息到远端broker;both:两个方向都共享;不定义时,默认为out。QoS level 定义了发布和订阅消息的QoS等级,默认为0.
local-prefix
和 remote-prefix
选项允许发布或接收远端broker的消息时做topic映射。 这样,本地broker的topic 树可以插入到远端broker的合适位置。
对于进入的topics, bridge会使用remote prefix 准备格式并向远端broker订阅改变后的topic 。当接收到匹配的消息,remote prefix 会从topic中删除并加上local prefix 。
对于出去的topics, bridge会使用local prefix 准备格式并向本地broker订阅改变后的topic 。当处理出去的消息时,local prefix 会从topic中删除并加上remote prefix。
当使用topic映射时,可以使用""
定义一个空的前缀。 Topic本省也可以使用空前缀。下表定义了空值和有效值的哪些组合是合法的。 “Full Local Topic”
和 “Full Remote Topic”
列展示了映射后的topic名字。 例如,对于第一行,如果发布到topic L/topic
到本地 broker, 远端broker将会在topic R/topic
收到消息。
Pattern |
Local Prefix |
Remote Prefix |
Validity |
Full Local Topic |
Full Remote Topic |
pattern |
L/ |
R/ |
valid |
L/pattern |
R/pattern |
pattern |
L/ |
"" |
valid |
L/pattern |
pattern |
pattern |
"" |
R/ |
valid |
pattern |
R/pattern |
pattern |
"" |
"" |
valid (no remapping) |
pattern |
pattern |
"" |
local |
remote |
valid (remap single local topic to remote) |
local |
remote |
"" |
local |
"" |
invalid |
||
"" |
"" |
remote |
invalid |
|
|
"" |
"" |
"" |
invalid |
要映射整个topic树,例如:
topic # both 2 local/topic/ remote/topic/
这个选项可以定义多次。
注意,不要使用这个选项创建回环topic。如果你的broker占用很高的CPU,可能有一个回环,broker之间一直在转发相同的消息。
参见cleansession
选项如果你从不期望的topic收到消息。
一个 Bridge Topic Remapping的例子:
下面的配置将一个bridge连接到broker test.mosquitto.org
。 它订阅了远端的topic $SYS/broker/clients/total
并且重新发布收到的消息到本地topic test/mosquitto/org/clients/total
connection test-mosquitto-org
address test.mosquitto.org
cleansession true
topic clients/total in 0 test/mosquitto/org $SYS/broker/
try_private
[ true | false ]
如果 try_private 为 true
, bridge会尝试告诉远端broker这是一个bridge而不是普通的client。如果成功,循环检查会更有效并且保留的消息传播的更准确。并不是所有的broker都支持这个功能,所以如果你的bridge不能正常连接时,需要将 try_private
设为 false
.
默认为 true
.
SSL/TLS 支持
下面的配置项是为所有的bridges配置 SSL/TLS 支持。
bridge_alpn
alpn
为TLS会话配置应用层协议的协商选项. 对在一个端口同时支持websockets 和 MQTT 的broker有用。
bridge_cafile
file path
必须提供bridge_cafile
或者 bridge_capath
其中之一以支持SSL/TLS
bridge_cafile用来定义包含PEM加密的CA认证文件的路径,这些认证已经为远端broker认证签名。
bridge_capath
file path
必须提供bridge_cafile
或者 bridge_capath
其中之一以支持SSL/TLS
bridge_capath 用来定义目录来存放PEM编码的CA认证 ,这些认证已经被远端broker签名认证。为了让 bridge_capath 正常工作, 认证文件必须以 ".crt" 结尾并且每次增加或删除一个认证时必须运行"openssl rehash <path to bridge_capath>" 。
bridge_certfile
file path
如果远端broker需要,此路径是这个bridge的PEM编码的客户端认证的路径.
bridge_identity
identity
Pre-shared-key 加密为基于认证的加密提供另一个选择。一个bridge可以使用带bridge_identity
和bridge_psk
选项的PSK配置。这是带PSK加密的client identity. 一次只能有一个基于certificate 和 PSK 的加密用在一个bridge上。
bridge_insecure
[ true | false ]
当使用基于认证的TLS时, bridge会尝试验证远端证书中的hostname是否匹配将要连接的host或者地址。在测试中,这可能引起问题,所以 bridge_insecure
可以设为false
来关闭hostname 验证.
设为true时,意味着一个恶意的第三方可能潜在的会进入你的服务器,所以,在生产环境中, 应该总是设为false
。
bridge_keyfile
file path
如果远端的broker需要,配置这个bridge的PEM编码的私有key的路径。
bridge_psk
key
Pre-shared-key 加密为基于加密的认证提供了另一个选择。 一个bridge可以使用带bridge_identity
和bridge_psk
选项的PSK配置. 这是十六进制不带"0x"前缀格式的pre-shared-key。一次只能有一个基于certificate 和 PSK 的加密用在一个bridge上。
bridge_require_ocsp
[ true | false ]
当设置为true时, bridge 需要它打开的TLS 连接上的OCSP 作为client.
bridge_tls_version
version
配置这个bridge使用的TLS协议的版本。可用的值为 tlsv1.3
, tlsv1.2
和 tlsv1.1
. 默认为tlsv1.2
. 远端的broker必须支持 相同的TLS版本。
转载地址:https://blog.csdn.net/lclfans1983/article/details/105680528 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
