有什么方法可以检查 orion 订阅(属性订阅,而不是上下文可用性订阅)当前是否处于事件状态或已过期?类似于 discoverContextAvailability
的上下文信息。
示例用例:
- 我在我的应用程序中添加了一个传感器设备
- 在 Orion 上为该设备注册上下文和订阅
- 从那时起订阅开始运行并定期将传感器数据返回到我的应用程序
- 现在,当订阅到期时,数据就停止了
延长订阅的推荐方法是什么? 你怎么知道它已经过期了?
我看到它的唯一方法是在创建订阅后将到期日期存储在我的应用程序中,并运行计划任务以在该日期延长它。
另一种方法是按固定时间间隔延长所有订阅(例如:让所有订阅运行 2 个月,每个月运行扩展任务)。
最好和最简单的方法是注册没有持续时间(无限持续时间)的订阅,但我在文档中的任何地方都没有看到该选项。
上下文注册也存在类似的问题,但我使用 discoverContextAvailability
方法解决了它。在每个 queryContext
或 updateContext
之前,我使用 discoverContextAvailability
检查上下文是否过期。如果是,我会再次注册并继续查询或更新请求。
我知道有 subscribeContextAvailability
但它和属性订阅有同样的问题。一旦到期,您如何知道它已经过期以及如何延长它?
最佳答案
关于检查过期的订阅,这在 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 年)的订阅是可行的。
可用性订阅在这些方面的工作方式几乎相同。
关于c# - Orion 上下文代理 : check subscription expiration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781551/