Статус работы Cumulocity MQTT не изменяется - PullRequest
0 голосов
/ 25 февраля 2019

Я зарегистрировал пробный аккаунт для тестирования Cumulocity и его mqtt api.Я хочу отправить операцию на какое-либо устройство (в настоящее время эмулируемое службой java) и получить результат операции.

В качестве руководства я использую следующие ссылки:

Следующий код используется для ответа на Cumulocity.

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

Итак, что я делаю не так?

Я ожидаю отметитьоперация как Failed или Success.

1 Ответ

0 голосов
/ 25 февраля 2019

Состояние «ОЖИДАНИЕ» всегда является начальным состоянием каждой операции в Cumulocity.SmartREST MQTT для операций всегда следует в следующем порядке:

PENDING -> EXECUTING -> SUCCESSFUL / FAILED

SmartREST всегда будет обновлять самую старую операцию (как мы хотимвыполнить операции в историческом порядке).

Так что, если вы отправите 501, он будет искать самую старую операцию сопоставления в состоянии PENDING.Если вы отправите 503, он будет искать самую старую операцию сопоставления в состоянии EXECUTING.

Из вашего объяснения не совсем ясно, было ли уже 2 операции перезапуска, когда вы выполняли ваш код.Ваш код полностью корректен, но если уже было две операции перезапуска, это объясняет, почему одна из них сейчас УСПЕШНА, а другая все еще находится в ОЖИДАНИИ.

...