Брокер контекста Orion: проверить срок действия подписки?

Есть ли способ проверить, активна ли в настоящее время подписка orion (подписка на атрибуты, а не подписка на доступность контекста) или срок ее действия истек? Что-то похожее на discoverContextAvailability для контекстной информации.

Пример использования:

  • Я добавляю сенсорное устройство в свое приложение
  • Зарегистрируйте контекст и подписку для этого устройства на Orion.
  • С этого момента подписка работает и периодически возвращает данные датчиков в мое приложение.
  • Теперь по истечении срока подписки данные просто перестают поступать

Каков рекомендуемый способ продления этой подписки? Как вы можете знать, что он истек в первую очередь?

Единственный способ, которым я это вижу, - это сохранить дату истечения срока действия в моем приложении после создания подписки и запустить запланированную задачу, чтобы продлить ее на эту дату.

Другой способ — продлевать все подписки через фиксированные промежутки времени (например: сделать все подписки активными на 2 месяца и каждый месяц запускать задачу продления).

Лучшим и самым простым способом было бы зарегистрировать подписку без продолжительности (неограниченной продолжительности), но я не вижу такой опции нигде в документации.

Аналогичная проблема существует и с регистрацией контекста, но я решил ее с помощью метода discoverContextAvailability. Перед каждым queryContext или updateContext я проверяю, истек ли срок действия контекста с помощью discoverContextAvailability. Если это так, я регистрирую его снова и продолжаю запрашивать или обновлять запросы.

Я знаю, что есть subscribeContextAvailability, но у него та же проблема, что и у подписок на атрибуты. Когда срок действия истекает, как узнать, что он истек, и как его продлить?


person ZolaKt    schedule 25.09.2015    source источник


Ответы (1)


Что касается проверки просроченных подписок, это невозможно в NGSIv1, но планируется для NGSIv2. Новые свойства подписки expires и status позволят выполнять запросы, подобные следующим:

GET /v2/subscriptions?q=status==active
GET /v2/subscriptions?q=expires<2015-10-07T10:12:00

Что касается продления подписки (в NGSIv1), оба способа, которые вы упомянули (сохранить дату истечения срока действия в вашем приложении или продлить все подписки через равные промежутки времени), подходят. Я бы сказал, что последний является наиболее распространенным шаблоном.

Что касается подписок без срока действия (т. е. постоянных подписок), NGSIv1 не разрешает это (это будет исправлено в NGSIv2: если подписка не включает поле expires, то она считается постоянной). Однако создать подписку с абсурдно большой продолжительностью (например, 100 лет) будет работать.

Подписки доступности работают практически одинаково в отношении этих аспектов.

person fgalan    schedule 07.10.2015