You need to enable JavaScript to run this app.
导航
MQTT 消息转发到 BMQ 实例
最近更新时间:2024.07.18 16:53:25首次发布时间:2024.07.18 16:53:25

MQTT 实例可以通过强大的内置规则引擎和数据集成功能,对消息和事件进行实时数据处理、转换和路由,然后根据配置的动作将处理结果进行消息重发布或转发到外部系统。本文介绍将 MQTT 消息转发到 BMQ 实例的详细配置流程。

准备工作

  • 在 MQTT 实例中,需要创建和 BMQ 实例的连接,完成两者的网络打通。请提前完成 BMQ 实例的创建,并在实例创建 Topic,用于接受来自 MQTT 转发的消息。
    如何创建 BMQ 实例和 Topic,请参见创建 BMQ 实例创建 Topic
  • 在 MQTT 实例中,需要创建连接器,用于接受客户端的连接请求。为方便验证,本文选择创建公网路由、TCP协议的监听器。
    公网监听器需要与弹性公网 IP(EIP)绑定,请提前创建 EIP。操作步骤,请参见申请公网IP

步骤一:创建 MQTT 实例

  1. 登录云原生消息引擎控制台

  2. 在顶部菜单栏,选择项目和地域。

  3. 在左侧导航栏选择 MQTT 实例,然后单击创建实例

  4. 创建实例页面,设置实例的基本信息、实例配置、网络配置等关键参数,然后单击下一步:确认订单
    图片

    参数

    说明

    基本信息

    计费类型

    选择实例计费的类型。目前支持按量计费包年包月两种计费类型,如需了解计费详情,请参见计费说明
    如果选择包年包月计费类型,还需要选择购买时长,以及确认是否需要自动续费

    实例名称

    输入实例名称。

    • 由小写字母、数字和短横线(-)构成,长度为 1~63 个字符。
    • 不得与存在的实例名称重复。

    地域及可用区

    地域已选定,不可更改。根据业务详情选择可用区。

    所属项目

    从下拉列表中选择实例所属项目。
    您可以对不同业务或项目使用的云资源进行分组管理。基于项目进行 IAM 授权,有利于维护资源独立、数据安全;同时可从项目维度查看资源消费账单,便于计算云资源使用成本。

    实例配置

    计算规格

    根据业务场景预估最大连接数和 TPS,然后选择适合的实例规格。

    网络配置

    私有网络

    从下拉列表中选择 VPC。如果还未创建私有网络,请参见创建私有网络
    为保证内网顺利访问,建议选择与需要连接的云资源在相同的 VPC。

    子网

    从下拉列表中选择子网。
    系统会自动根据您选择的地域、可用区、私有网络筛选出可用的子网。

  5. 查看实例配置信息,然后阅读并勾选产品相关协议,再单击提交

  6. 查看实例创建进度。
    提交购买订单后,您可以返回 MQTT 实例列表页面。购买的实例显示为初始化中,初始化完成后显示为运行中

步骤二:配置 MQTT 与 BMQ 连接

在 MQTT 实例中,需要创建和 BMQ 实例的连接,完成两者的网络打通。

  1. 登录云原生消息引擎控制台
  2. 在左侧导航栏选择 MQTT 实例,单击目标实例名称。
  3. 连接管理页签下,单击创建连接
  4. 创建连接对话框中,设置连接名称,选择需要连接的 BMQ 实例,然后单击确定
    图片
  5. 获取连接地址。
    连接 BMQ 实例后,需要获取连接地址,后续在 Dashboard 上创建连接器时需要使用。
    图片

步骤三:创建监听器

监听器是 MQTT 与客户端之间连接的核心组件,负责接受客户端连接请求。为方便验证,本文选择创建公网路由、TCP协议的监听器。

  1. 登录云原生消息引擎控制台
  2. 在左侧导航栏选择 MQTT 实例,单击目标实例名称。
  3. 监听器页签下,单击添加监听器
  4. 添加监听器对话框中,选择公网路由,然后选择公网 IP 和 TCP 协议,再单击确定

    说明

    为验证方便,本文选择创建公网路由、TCP 协议的监听器。
    如果需要详细了解监听器的路由类型、协议类型的信息,或创建其他类型的监听器,请参见添加公网监听器添加私网监听器

    图片
  5. 获取监听器地址。
    创建公网监听器后,需要获取监听器地址,后续客户端向 MQTT 主题发送消息时需要使用。
    图片

步骤四:创建 Dashboard 用户

在 MQTT 实例中,您需要创建用户用于登录 Dashboard。系统为 Dashboard 用户预设了管理员查看者两种角色,本文需要创建一个管理员角色的用户。

  1. 登录云原生消息引擎控制台
  2. 在左侧导航栏选择 MQTT 实例,单击目标实例名称。
  3. 用户管理页签下,单击创建用户
  4. 创建用户对话框,设置用户名和密码,关联管理员角色,然后单击确定
    图片

步骤五:在 Dashboard 中创建连接器

连接器是 MQTT 用于连接外部系统或服务的组件,目前仅支持创建 Kafka 生产者连接器,该连接器实际是连接到 BMQ 实例。

  1. 登录 Dashboard。
    1. 登录云原生消息引擎控制台
    2. 在左侧导航栏选择 MQTT 实例,单击目标实例名称。
    3. 实例详情页面的网络信息区域,单击 Dashboard 地址。
      图片
    4. 在登录页面,输入用户名和密码,然后单击登录
  2. 在 Dashboard 导航栏选择集成 > 连接器,然后单击页面右上角的创建
  3. 选择连接器类型为 Kafka 生产者,然后单击下一步
    图片
  4. 配置 Kafka 连接器的名称、主机列表等参数,然后单击测试连接

    说明

    填写的主机列表即是 MQTT 连接的 BMQ 实例的连接地址。

    图片
  5. 返回连接成功提示后,单击创建

步骤六: 在 Dashboard 中创建规则

规则引擎是 MQTT 内置的数据处理功能,您可以通过定义 SQL 语句来处理并筛选消息,无需编写代码即可实现数据提取、过滤和转换处理,并将处理后的数据转发到外部系统。目前仅支持转发到 Kafka 生产者连接器,本质上是转发到 BMQ 实例。

说明

除了通过创建规则以外,您也可以选择使用 Flow 设计器,在可视化页面通过拖拽和连接操作即可快速配置数据处理流程。更多信息,请参见创建 Flow

  1. 登录 Dashboard,在导航栏选择集成 > 规则

  2. 规则页签下,单击页面右上角的创建

  3. 设置规则名称和备注信息。

  4. 在 SQL 编辑器中输入 SQL 语句。
    下图中的 SQL 语句为SELECT * FROM "mqtt-topic-1",表示选择名为mqtt-topic-1主题中所有的信息。
    图片

  5. 在创建规则右侧的动作输出页签下,单击添加动作

  6. 在下拉列表中,选择动作类型为 Kafka 生产者
    图片

  7. 配置将消息处理结果转发到 Kafka 生产者的参数。
    图片
    此处仅介绍部分重要参数,如需了解更多,请参见创建规则

    参数

    说明

    动作类型

    此处选择Kafka 生产者

    动作

    仅支持创建动作

    名称

    自定义设置 Sink 组件的名称。

    连接器

    从下拉列表中选择已提前创建好的 Kafka 生产者连接器。

    描述

    自定义设置描述语句。

    Kafka 主题名称

    在 Kafka 生产者连接器对应的 BMQ 实例中,已经创建好的 Topic 名称。

  8. SQL 语句和动作配置完成后,单击页面左下角的创建,完成规则的创建。

结果验证

完成上述所有配置流程后,您可以发送消息到 MQTT 主题。如果主题与 SQL 语句中配置的主题匹配,将会触发规则,MQTT 会将消息处理结果转发到 BMQ 实例。

  1. 您可以使用第三方的开源 Java SDK 发送消息到 MQTT 主题,开源 Java SDK 下载地址为:Eclipse Paho Java Client

  2. 配置 Broker 地址、MQTT 主题、消息内容等信息,然后执行代码。
    代码片段如下所示:

    public class MqttPublishSample {
    
        public static void main(String[] args) {
    
            String topic        = "mqtt-topic-1";
            String content      = "Hello World";
            int qos             = 2;
            String broker       = "tcp://mqtt-00k0wt***.mqtt.volces.com:1883";
            String clientId     = "client-test-1";
            MemoryPersistence persistence = new MemoryPersistence();
    
  3. 在 BMQ 实例中查询消息。

    1. 登录云原生消息引擎控制台
    2. 在项目左侧导航栏选择 BMQ 实例,单击目标实例名称,进入实例详情页面。
    3. 在实例详情页面选择消息查询页签,然后查询消息。
      图片
      在 BMQ 接收到的消息中,您可以查看到以下重要信息:
      • username:发送消息的用户。由于 MQTT 客户端未设置发送消息的用户,因此显示为 undefined。
      • topic:MQTT 主题,MQTT 将该主题的消息转发到 BMQ 实例。
      • qos:消息服务质量(QoS)等级,QoS 2表示消息只交付一次。
      • payload:消息内容。
      • rule_id:规则 ID。客户端发送消息到目标主题触发了该规则,MQTT 将主题中的消息转发到 BMQ 实例。
      • clientid:发送消息的客户端 ID。