【问题标题】:Wildcard topic names and capturing message from all topics通配符主题名称和从所有主题中捕获消息
【发布时间】:2020-03-05 05:41:50
【问题描述】:

我们正在使用 AWS IoT。

我们有预定义的主题 (+/device/),设备会在其中发布消息。

但有可能,设备可以将消息发布到任何其他主题。

我想计算这些单个设备发布到所有主题的消息数量并实施限制。

我尝试使用通配符主题名称(如(+/* 或 /)创建 IoT 规则,但这些通配符主题似乎都不起作用。

是否有任何通配符主题名称,我可以使用它来捕获来自所有主题的消息?

或者有没有办法将所有主题的所有消息转储到 DynamoDB 或 S3 的某个地方,并计算特定时间段内来自各个设备的消息数量?

【问题讨论】:

    标签: aws-lambda amazon-dynamodb aws-iot aws-iot-analytics


    【解决方案1】:

    我尝试使用通配符主题名称(如(+/* 或 /))创建 IoT 规则,但这些通配符主题似乎都不起作用。

    是否有任何通配符主题名称,我可以使用它来捕获来自所有主题的消息?

    +# 是 AWS IoT 规则的相关通配符。见https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-from.html

    您可以使用以下语句配置规则以捕获来自所有主题的消息。

    SELECT * FROM '#'
    

    或者有没有办法将所有主题的所有消息转储到 DynamoDB 或 S3 的某个地方,并计算特定时间段内来自各个设备的消息数量?

    一种方法是基于上述规则创建规则,并在每条消息上传递客户端 ID(使用 clientid() 函数)。此规则的操作可以将客户端 ID 写入 DynamoDB 或 S3。然后这些信息可用于您的计算。

    另一种方法可能是将消息和客户端 ID 写入 Kinesis Data Stream 并使用 Kinesis Data Analytics 检测错误设备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多