Orion 上下文代理:检查订阅到期?

Orion context broker: check subscription expiration?

有什么方法可以检查 orion 订阅(属性订阅,而不是上下文可用性订阅)当前是否有效或已过期?上下文信息类似于 discoverContextAvailability

示例用例:

延长此订阅的推荐方法是什么? 你怎么知道它已经过期了?

我看到的唯一方法是在创建订阅后将到期日期存储在我的应用程序中,然后 运行 一个计划任务将它延长到该日期。

另一种方法是按固定时间间隔延长所有订阅(例如:让所有订阅运行 2个月,每个月运行延长任务)。

最好和最简单的方法是注册没有持续时间(无限持续时间)的订阅,但我在文档中的任何地方都没有看到该选项。

上下文注册也存在类似的问题,但我使用 discoverContextAvailability 方法解决了它。在每个 queryContextupdateContext 之前,我用 discoverContextAvailability 检查上下文是否过期。如果是,我会重新注册并继续查询或更新请求。

我知道有 subscribeContextAvailability但是它和属性订阅有同样的问题。一旦它过期了,你怎么知道它已经过期了,你如何延长它?

关于检查过期订阅,这在 NGSIv1 中是不可能的,但计划在 NGSIv2 中实现。新的 expiresstatus 订阅属性将允许执行如下查询:

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

关于延长订阅(在 NGSIv1 中),您提到的两种方式(在您的应用程序中存储到期日期或定期延长所有订阅)都可以。我会说最后一个是最常见的模式。

关于没有过期时间的订阅(即永久订阅),NGSIv1 不允许(这将在 NGSIv2 中修复:如果订阅不包含 expires 字段,那么它被认为是永久的).但是,创建具有荒谬的长持续时间(例如 100 年)的订阅将有效。

可用性订阅在这些方面的工作方式几乎相同。