【问题标题】:How do I guarantee unique subscriptions in Orion Context Broker?如何保证 Orion Context Broker 中的唯一订阅?
【发布时间】:2015-04-21 20:55:34
【问题描述】:

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

有没有什么方法可以在 Orion 中实现类似的结果(我们称之为“命名订阅”),而不使用外部数据库?

【问题讨论】:

    标签: fiware-orion


    【解决方案1】:

    Orion 开发路线图中有一个计划中的订阅“浏览”操作(请参阅this document 中的操作 ID 45),这可能会对您的情况有所帮助。

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

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

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

    【讨论】:

    • 基本上你是在建议通过参考信息来猜测应用程序,对吗?因为在我的情况下,如果我无法将一些附加信息附加到订阅中,我没有任何可靠的方法来猜测这种关联。是否有任何字段可用于此目的(例如元数据字段)?
    • 鉴于不同的订阅可能使用相同的引用,我建议使用 _id 字段来标识每个订阅(_id 字段值是唯一的)。 NGSI 在订阅中不包含元数据,但您可以使用 Orion 本身将订阅 ID 与应用程序相关联,例如SubscriptionAssociation 实体具有两个属性,一个用于应用程序名称,另一个用于关联的订阅 ID。
    • 我认为这条评论正确地回答了我的问题并涵盖了我的用例。我编辑了你的答案。
    • 恐怕SOF审稿人已经拒绝了你的编辑:(不过,不用担心,信息还在cmets中:)谢谢!
    • 您介意用您在评论中提出的解决方案和此答案的第一行提供另一个答案吗?我真的认为这是一个可以接受的答案,但不是这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    相关资源
    最近更新 更多