FIWARE Orion多服务订阅问题:单请求配置多通知URL
解决Orion多服务订阅通知的问题
我明白你现在的需求:一次性订阅所有Nodo_aire类型实体的全属性,同时把通知发送给Cygnus、STH-comet等多个服务。其实Orion的订阅API完全支持这种场景,只需要把notification里的http字段从单个对象改成数组,就能配置多个通知URL啦!
完整的请求体示例
{ "subject": { "entities": [ { "type": "Nodo_aire", "idPattern": ".*" } ], "condition": { "attrs": [] } }, "notification": { "http": [ { "url": "http://192.168.1.51:5050/notify" // Cygnus的通知地址 }, { "url": "http://你的STH-comet地址:端口/notify" // STH-comet的通知地址 }, { "url": "http://其他服务地址:端口/notify" // 其他需要通知的服务 } ], "attrs": [], "metadata": ["dateCreated", "dateModified"], // 可选:如果需要接收实体元数据的话 "onlyChangedAttrs": false // 可选:设为false确保每次属性更新都发送全量通知 }, "expires": "2099-12-31T23:59:59.00Z" // 可选:设置订阅过期时间,永久订阅可以设很远的时间 }
关键部分说明
subject部分:你原来的配置已经没问题,idPattern: ".*"会匹配所有Nodo_aire类型的实体,condition.attrs: []表示订阅该实体的所有属性,不用逐个指定。notification.http数组:这是实现多服务通知的核心,每个数组元素对应一个服务的通知URL,Orion会在实体属性更新时,同时向所有这些URL发送通知请求。- 额外配置建议:
metadata字段可以指定要附带的元数据(比如实体创建/修改时间),如果不需要可以去掉。onlyChangedAttrs设为false会发送所有属性的完整数据,设为true则只发送变化的属性,根据你的需求选择即可。expires设置订阅的有效期,避免订阅自动失效(默认Orion订阅会在一定时间后过期)。
注意事项
- 要确保Orion服务器能访问到每个通知URL对应的服务,比如检查网络连通性、端口是否开放。
- 提前确认Cygnus、STH-comet等服务已经正确配置,能够处理Orion发送的通知格式(默认是JSON格式的NGSI v2通知)。
内容的提问来源于stack exchange,提问作者Sevastián Ríos
相关产品推荐
相关产品推荐

