FIWARE Orion:筛选订阅

FIWARE Orion:筛选订阅,fiware,fiware-orion,Fiware,Fiware Orion,我们使用Orion注册订阅。我们的应用程序中有两种订阅: 用户订阅:它们由用户使用我们的GUI创建 内部订阅:系统用于组件之间的通信 问题是要区分两者,以便只向用户提供面向用户的订阅。 我可以使用订阅的哪个字段?例如,最好有一个字段“type”。解决方案可以是利用与订阅相关联的描述字段来区分这两种类型。将来可能最好在订阅中打开额外字段的可能性(应用程序定义)并且能够对订阅进行查询(这是目前无法做到的)。我同意上面所说的,这将是一个非常好的功能 除了他的回复,同时我认为您可以在订阅中使用“元数

我们使用Orion注册订阅。我们的应用程序中有两种订阅:

  • 用户订阅:它们由用户使用我们的GUI创建
  • 内部订阅:系统用于组件之间的通信
问题是要区分两者,以便只向用户提供面向用户的订阅。
我可以使用订阅的哪个字段?例如,最好有一个字段“type”。

解决方案可以是利用与订阅相关联的
描述
字段来区分这两种类型。

将来可能最好在订阅中打开额外字段的可能性(应用程序定义)并且能够对订阅进行查询(这是目前无法做到的)。

我同意上面所说的,这将是一个非常好的功能

除了他的回复,同时我认为您可以在订阅中使用“元数据”字段来区分用户订阅和内部订阅。请记住,这个字段不应该用于此目的,它是一种实现您想要的行为的“黑暗”方式

下面是使用我的方法创建订阅的示例。在本例中,您使用元数据字段“isInternal”创建一个订阅,该字段仅告诉您这是一个内部订阅。然后,您可以使用另一个不同的元数据字段作为令牌,仅用于标识用户订阅:

curl -X POST \
  http://localhost:1026/v2/subscriptions \
  -H 'Content-Type: application/json' \
  -d '{
       "description": "A subscription to get info about Room1",
       "subject": {
         "entities": [
           {
             "id": "Room1",
             "type": "Room"
           }
         ],
         "condition": {
           "attrs": [
             "temperature"
           ]
         }
       },
       "notification": {
         "http": {
           "url": "http://localhost:1028/accumulate"
         },
         "attrs": ["temperature"],
         "metadata": ["isInternal"]
       }
     }'

有关订阅中的元数据字段及其正常使用的更多信息,请参阅此。

是,但描述是人类可读的字段。这就是为什么我建议添加一个字段“type”或类似的内容。
notification
中的
metadata
字段用于选择要包含在与订阅相关联的通知中的属性元数据。您建议的用法是:此答案不是该字段所针对的答案。。。尽管我不得不承认,对于这个用例来说,它可能是一种有效的“黑客攻击”