【问题标题】:Is message in the Broker not timestamped?Broker 中的消息是否没有时间戳?
【发布时间】:2017-03-23 06:56:08
【问题描述】:

我正在玩一个物联网项目,到目前为止一切都很好,我可以使用我在网上找到的免费经纪人在客户之间共享数据......

我的用例是关于一个温度传感器,它发布带有保留的消息到主题 room/temp

由于保留了 msg,因此 client_2 正在稍后,订阅该主题并获取 client_1 不久前发布的 temp 的最后一个值。

现在我的问题:

我需要 Client_2 也知道该消息是在何时发布的,我的意思是我想知道多少秒后才能获得该信息..

我正在使用 Paho-Eclipse 作为 jar 并在回调中使用 here

messageArrived(java.lang.String topic, MqttMessage message)

没关系

为什么? 我该怎么办?

谢谢!! :)

【问题讨论】:

    标签: java mqtt iot paho


    【解决方案1】:

    MQTT 是一种有意的轻量级协议,这意味着消息头中不包含不需要的信息。

    时间戳不是传递消息的必填字段,因此不包括在内。

    如果要包含时间戳,则必须自己将其编码到消息负载中。

    【讨论】:

    • 我认为向有效载荷添加时间戳值不会改变漏洞 轻量级 概念...
    • 给定一个时间戳通常需要 32 位(4 个字节),而 MQTT 标头对于发布的消息可以小至 7 个字节,这非常重要
    【解决方案2】:

    您是以 JSON 数据或 XML 还是纯文本形式发送温度传感器数据?

    如果您使用的是 JSON,那么您可以这样做:

    {"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}
    

    或者 XML,你可以这样做:

    <?xml version="1.0" encoding="UTF-8"?>
    <Temperature>
      <TS>1451649600512</TS>
      <Values>
        <key1>value1</key1>
        <key2>value2</key2>
      </Values>
    </Temperature>
    

    【讨论】:

    • 只是纯文本...实际上只发送值,例如 11.5 或 -2.4
    猜你喜欢
    • 2019-07-28
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多