# 5 分钟快速入门

  1. https://hub.docker.com/r/emqx/kuiper/tags 拉取 Kuiper 的 Docker 镜像。在本教程中推荐使用 alpine 镜像(参考 Kuiper Docker (opens new window) 的内容了解不同 Kuiper Docker 镜像的区别)。

  2. 设置 Kuiper 源为一个 MQTT 服务器。本例使用位于 tcp://broker.emqx.io:1883 的 MQTT 服务器, broker.emqx.io 是一个由 EMQ (opens new window) 提供的公有 MQTT 服务器。

    docker run -p 9081:9081 -d --name kuiper -e MQTT_SOURCE__DEFAULT__SERVERS=[tcp://broker.emqx.io:1883] emqx/kuiper:$tag
    
    1
  3. 创建流(stream)- 流式数据的结构定义,类似于数据库中的表格类型定义。比如说要发送温度与湿度的数据到 broker.emqx.io,这些数据将会被在本地运行的 Kuiper docker 实例中处理。以下的步骤将创建一个名字为 demo 的流,并且数据将会被发送至 devices/device_001/messages 主题,这里的 device_001 可以是别的设备,比如 device_002,所有的这些数据会被 demo 流订阅并处理。

    -- In host
    # docker exec -it kuiper /bin/sh
    
    -- In docker instance
    # bin/kuiper create stream demo '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="devices/+/messages")'
    Connecting to 127.0.0.1:20498...
    Stream demo is created.
    
    # bin/kuiper query
    Connecting to 127.0.0.1:20498...
    kuiper > select * from demo where temperature > 30;
    Query was submit successfully.
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
  4. 您可以使用任何 MQTT 客户端工具 (opens new window)来发布传感器数据到服务器 tcp://broker.emqx.io:1883的主题 devices/device_001/messages 。以下例子使用 mosquitto_pub

    # mosquitto_pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
    
    1
  5. 如果一切顺利的话,您可以看到消息打印在容器的 bin/kuiper query 窗口里,请试着发布另外一条温度小于30的数据,该数据将会被 SQL 规则过滤掉。

    kuiper > select * from demo WHERE temperature > 30;
    [{"temperature": 40, "humidity" : 20}]
    
    1
    2

    如有任何问题,请查看日志文件 log/stream.log

  6. 如果想停止测试,在bin/kuiper query命令行窗口中敲 ctrl + c ,或者输入 exit 后回车

你可以参考 Kuiper 管理控制台 (opens new window) 这篇文章来了解更好的产品使用体验。

想了解更多 EMQ X Kuiper 的功能?请参考以下关于在边缘端使用 EMQ X Kuiper 与 AWS/Azure IoT 云集成的案例。