猎户座上下文代理:检查订阅到期?

时间:2015-09-25 11:49:27

标签: c# fiware fiware-orion

有没有办法检查orion订阅(属性订阅,而不是上下文可用性订阅)当前是活动还是已过期?类似于discoverContextAvailability的上下文信息。

示例用例:

  • 我在我的应用程序中添加了一个传感器设备
  • 在Orion
  • 上注册该设备的上下文和订阅
  • 从那时起,订阅正在运行并定期将传感器数据返回给我的应用程序
  • 现在,当订阅到期时,数据就会停止发送

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

我看到的唯一方法是在创建订阅后将过期日期存储在我的应用中,并运行计划任务以在该日期扩展它。

另一种方法是以固定间隔扩展所有订阅(例如:使所有订阅运行2个月,每月运行扩展任务)。

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

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

我知道有subscribeContextAvailability,但它有与属性订阅相同的问题。一旦它到期,你怎么知道它已经过期了,你如何扩展它?

1 个答案:

答案 0 :(得分:1)

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

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

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

关于没有到期时间的订阅(即永久订阅),NGSIv1不允许(将在NGSIv2中修复:如果订阅不包含expires字段,那么它是被视为永久性的)但是,创建具有非常大的持续时间(例如100年)的订阅将起作用。

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