累积MQTT操作状态不变

时间:2019-02-25 10:11:22

标签: java mqtt paho cumulocity

我已经注册了一个测试帐户来测试Cumulocity及其mqtt api。 我想将操作发送到某些设备(当前由Java服务模拟)并接收操作结果。

按照手册,我使用以下链接:

以下代码用于对累积量做出响应。

if (payload.startsWith("510")) {
    System.out.println("Simulating device restart...");
    client.publish("s/us", "501,c8y_Restart".getBytes(), 2, false);
    System.out.println("...restarting...");
    Thread.sleep(TimeUnit.SECONDS.toMillis(1));
    client.publish("s/us", "503,c8y_Restart".getBytes(), 2, false);
    System.out.println("...done...");
}

501代码表示重启操作已开始,503代码表示设备重启成功。

但是实际上,在Cumulocity UI中,操作状态已更改为Pending

Image

如果我再次发送restart操作,前一个操作将更改为Success,而新操作将更改为Pending

Image 2

那么,我在做什么错了?

我希望将操作标记为FailedSuccess

1 个答案:

答案 0 :(得分:0)

“待处理”状态始终是Cumulocity中每个操作的初始状态。 用于操作的SmartREST MQTT始终遵循以下顺序:

待处理->执行->成功/失败

SmartREST将始终更新最早的操作(因为我们要按历史顺序执行操作)。

因此,如果您发送501,它将在PENDING状态下寻找最早的匹配操作。 如果您发送503,它将在执行状态下查找最早的匹配操作。

根据您的解释,尚不清楚在执行代码时是否已经进行了两次重启操作。您的代码是完全正确的,但是如果已经有两次重新启动操作,这将解释为什么现在一个成功,而另一个仍在挂起中。