跳到主要内容

MQTT消息管理

Solace PubSub+ 事件代理支持 OASIS MQTT v3.1.1 和 v5.0 标准,以满足需要高效方式发送和接收信息的连接设备和移动应用的需求,这些信息需要的带宽、客户端处理能力和/或带宽非常少。Solace PubSub+ 事件代理可以与任何第三方 MQTT v3.1.1 或 v5.0 兼容的客户端 API 一起工作,包括通过 Eclipse 发起的名为 Paho 的开源 API。

传输方式

Solace PubSub+ 事件代理支持以下传输方式用于 MQTT 服务:

  • 明文
  • TLS
  • WebSocket
  • WebSocket 安全

启用和禁用MQTT服务

有关如何启用和禁用 MQTT 服务的信息,请参阅 MQTT 服务管理。

管理MQTT服务

Solace PubSub+ 事件代理上的 MQTT 服务可以在每个消息 VPN 级别进行配置。

您可以为 MQTT 服务配置以下设置:

  • 设置监听端口
  • 设置 MQTT 连接的最大数量
  • 启用和禁用 MQTT 连接
  • 配置何时向 MQTT 客户端请求客户端证书

设置监听端口

您必须为 MQTT 客户端配置 TCP 端口号,以便在连接到消息 VPN 时使用。可以为 MQTT 客户端可以使用的每种传输类型配置单独的端口。可能的传输类型包括:明文、TLS/SSL、WebSocket 和 WebSocket 安全。

要为给定消息 VPN 的 MQTT 连接设置监听端口,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# listen-port <port> [ssl] [web]

其中:

  • <port> 是从 1 到 65535 的端口号。该端口不能用于任何其他服务。请注意,如果命令中不包含 ssl 和/或 web 参数,则端口将使用明文传输。
  • [ssl] 指定给定端口使用 TLS/SSL 加密。
  • [web] 指定给定端口使用 WebSocket。
  • [ssl][web] 一起指定给定端口使用 WebSocket 安全。

此命令的 no 版本 no listen port 将移除当前配置的端口号。

  • 为要配置的每种传输类型分别输入命令。
  • 要更改端口号,必须关闭 MQTT 连接(请参阅启用和禁用 MQTT 连接)。

设置MQTT连接的最大数量

要设置可以同时连接到给定消息 VPN 的 MQTT 客户端的最大数量,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# max-connections <value>

其中:

  • <value> 是允许的同时连接的最大数量。

此命令的 no 版本 no max-connections 将值重置为事件代理支持的最大限制。

此参数可以设置为高于事件代理允许的同时连接的最大数量的值,但事件代理的连接限制仍将被强制执行。

启用和禁用MQTT连接

在消息 VPN 内,可以根据使用的特定传输类型启用或禁用给定消息 VPN 的 MQTT 服务。默认情况下,消息 VPN 的 MQTT 服务未启用。

可以为 MQTT 服务启用和禁用以下传输:

  • 明文
  • TLS
  • WebSocket
  • WebSocket 安全

明文

要为给定消息 VPN 启用使用 TCP 明文传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# no plain-text shutdown

要为给定消息 VPN 禁用使用 TCP 明文传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# plain-text shutdown

禁用明文连接将断开任何当前连接到配置的明文监听端口的客户端。

TLS

要为给定消息 VPN 启用使用传输层安全(TLS)/ 安全套接字层(SSL)传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# no ssl shutdown

要为给定消息 VPN 禁用使用传输层安全(TLS)/ 安全套接字层(SSL)传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# ssl shutdown

禁用 TLS/SSL 连接将断开任何当前连接到配置的 TLS/SSL 监听端口的客户端。

WebSocket

要为给定消息 VPN 启用使用 WebSocket 传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# no WebSocket shutdown

要为给定消息 VPN 禁用使用 WebSocket 传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# websocket shutdown

禁用 WebSocket 连接将断开任何当前连接到配置的 WebSocket 监听端口的客户端。

WebSocket 安全

要为给定消息 VPN 启用使用 WebSocket 安全传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# no WebSocket-secure shutdown

要为给定消息 VPN 禁用使用 WebSocket 安全传输的 MQTT 连接,请输入以下命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# websocket-secure shutdown

禁用 WebSocket 安全连接将断开任何当前连接到配置的 WebSocket 安全监听端口的客户端。

配置何时向MQTT客户端请求客户端证书

默认情况下,如果在给定消息 VPN 中启用了客户端证书身份验证,PubSub+ 事件代理会向通过 TLS 端口连接的 MQTT 客户端请求客户端证书。由于许多流行的 Web 浏览器对客户端证书请求处理不佳,这可能导致在 Web 浏览器中运行的客户端无法通过 WebSocket 安全(WSS)协议连接。如果您有使用 WSS 从 Web 浏览器连接的客户端,以及其他需要使用客户端证书进行身份验证的同一消息 VPN 中的客户端,您可能希望阻止代理向进入的 Web 客户端请求客户端证书。

要配置代理何时向通过 TLS 端口连接的进入 MQTT 客户端请求客户端证书,请输入以下 CONFIG 命令:

solace(configure)# message-vpn <vpn-name>
solace(configure/message-vpn)# service mqtt
solace(configure/message-vpn/service/mqtt)# authentication
solace(...ssage-vpn/service/mqtt/authentication)# client-certificate
solace(...qtt/authentication/client-certificate)# request-client-certificate {always | never | when-enabled-in-message-vpn}

其中:

  • always 配置代理始终请求客户端证书,无论消息 VPN 中是否启用了客户端证书身份验证。有关更多信息,请参阅为客户端启用/禁用客户端证书身份验证。
  • never 配置代理从不请求客户端证书,无论消息 VPN 中是否启用了客户端证书身份验证。如果不想让代理向您的 WebSocket 安全客户端请求客户端证书,但仍然希望为其他类型的客户端(例如网桥)使用客户端证书身份验证,则此设置很有用。
  • when-enabled-in-message-vpn 配置代理仅在消息 VPN 中启用了客户端证书身份验证时请求客户端证书。这是默认设置。

此命令的 no 版本 no request-client-certificate 将值重置为默认值。