Skip to content

自动订阅

自动订阅是 EMQX 支持的 MQTT 扩展功能。自动订阅能够给 EMQX 设置多个规则,在设备成功连接后按照规则为其订阅指定主题,不需要额外发起订阅。

在 EMQX 5.0 之前,该功能叫做代理订阅。

通过 Dashboard 配置自动订阅

  1. 打开 EMQX Dashboard。在左侧导航菜单中,点击管理 -> 代理订阅

  2. 代理订阅页面,点击右上角的 + 添加按钮。

  3. 在弹出的对话框中,在主题文本框中输入测试主题 a/1。其他设置保持默认值。

    • 主题: 输入客户端自动订阅的主题。
    • QoS: 指定主题的服务质量。选项:012
    • No local: 选项:FalseTrue
    • 保留发布: 指定是否保留使用指定主题发送的消息。选项:FalseTrue
    • 保留处理: 选项:012
    auto-sub-dashboard

    点击对话框中的添加按钮。自动订阅主题 a/1 创建成功。

    auto-sub-dashboard-create

现在自动订阅功能已启用。新的订阅者一旦连接到代理服务器,将自动订阅主题 a/1

使用 MQTTX Desktop 尝试自动订阅

通过 Dashboard 配置自动订阅中,将主题 a/1 已被配置为自动订阅主题。以下步骤演示了客户端一旦连接到 EMQX,将自动订阅主题 a/1

前置准备

能使用 MQTTX Desktop 进行基本的发布和订阅操作。

  1. 启动 EMQX 和 MQTTX Desktop。点击新建连接创建一个名为 Demo 的客户端连接作为发布者。

    • 名称栏中输入 Demo
    • 在本演示中,服务器地址使用本地主机 127.0.0.1 作为示例。
    • 其它设置保持默认,点击连接

    TIP

    MQTTX Desktop 中介绍了更多详细的连接创建信息。

retain-message-new-connection-general
  1. 创建另一个名为 Subscriber 的 MQTT 客户端连接作为订阅者。

  2. 连接窗格中选择客户端连接 Demo。在主题栏中输入 a/1。发送一条消息到该主题。

    • 客户端 Subscriber 将自动接收到该消息,无需创建新的订阅。

    • 客户端 Demo 也收到该消息,因为它也是一个新的连接。

      TIP

      在发布/订阅模式下,一个客户端可以既是发送者又是订阅者。

  3. 进入 EMQX Dashboard。在左侧导航菜单中点击监控 -> 订阅管理。显示自动订阅主题 a/1 的 2 个订阅。

    auto-sub-dashboard-view

使用 MQTTX CLI 尝试自动订阅

前置准备

能使用 MQTTX CLI 进行基本的发布和订阅操作。

  1. 创建一个以 emqx_c 为客户端 ID 的新连接。

    bash
    mqttx conn -i emqx_c
  2. 进入 EMQX Dashboard。在左侧导航菜单中点击监控 -> 订阅管理。显示客户端 emqx_c 订阅了主题 a/1

    auto-sub-emqx_c