有没有办法检查orion订阅(属性订阅,而不是上下文可用性订阅)当前是活动还是已过期?类似于discoverContextAvailability
的上下文信息。
示例用例:
扩展此订阅的推荐方法是什么? 你怎么知道它已经过期了?
我看到的唯一方法是在创建订阅后将过期日期存储在我的应用中,并运行计划任务以在该日期扩展它。
另一种方法是以固定间隔扩展所有订阅(例如:使所有订阅运行2个月,每月运行扩展任务)。
最好和最简单的方法是在没有持续时间(无限期)的情况下注册订阅,但我在文档中的任何地方都没有看到该选项。
上下文注册也存在类似的问题,但我使用discoverContextAvailability
方法解决了它。在每个queryContext
或updateContext
之前,我会检查上下文是否已过期discoverContextAvailability
。如果是,我再次注册并继续查询或更新请求。
我知道有subscribeContextAvailability
,但它有与属性订阅相同的问题。一旦它到期,你怎么知道它已经过期了,你如何扩展它?
答案 0 :(得分: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年)的订阅将起作用。
可用性订阅在这些方面的工作方式基本相同。