我如何保证 Orion Context Broker 中的唯一订阅?

How do I guarantee unique subscriptions in Orion Context Broker?

在我的设置中,我有一个应订阅特定类型上下文更改的应用程序。 该应用程序当前在启动时执行订阅。但是,如果我重新启动应用程序,订阅就会重复。为了克服这个问题,我开始在数据库中跟踪订阅,这样我的应用程序 ID 和最新的订阅 ID 之间就有了关联。

有没有办法在不使用外部数据库的情况下在 Orion 中获得类似的结果(我们可以这样称呼它 "named subscriptions")?

Orion 开发路线图中有一个计划中的订阅 "browsing" 操作(请参阅 this document 中的操作 ID 45)可能对您的情况有所帮助。

但是,虽然此操作得到实施,但您提到的另一种方法(即在外部数据库中保留订阅信息)是访问 Orion 数据库本身以获取订阅信息。数据模型(描述 here)非常简单,如果您熟悉 MongoDB,获取信息也很容易。请注意,此解决方案需要访问 Orion DB(即,如果您控制自己的 Orion 实例,这是可行的)。

编辑:鉴于不同的订阅可能使用相同的引用,我建议使用 _id 字段来标识每个订阅(_id 字段值是唯一的)。 NGSI 不在订阅中包含元数据,但您可以使用 Orion 本身将订阅 ID 与应用程序相关联,例如具有两个属性的 SubscriptionAssociation 实体,一个用于应用程序名称,另一个用于关联的订阅 ID

编辑: 自 Orion 0.25.0 以来,GET /v2/subscriptions 操作允许您浏览现有订阅。