Orion-LD:0.8.0 新增Event类型实体触发订阅webhook失效问题咨询
Orion-LD 订阅不生效排查方案
1 订阅配置本身问题
- 你的订阅配置中
@context字段目前填的是占位符linktocontext,实际必须和你创建Event类型实体时使用的JSON-LD上下文完全一致。Orion-LD强依赖上下文做类型匹配,若两边上下文不匹配,Event类型展开后的URI不一致,订阅就不会触发。 - 0.8.0版本默认仅在实体属性变更时触发通知,你需要新增
"notificationTrigger": "entityCreated"字段,显式指定实体创建事件触发通知。
修正后的完整订阅配置参考:[ { "id": "urn:ngsi-ld:Subscription:618397ade7b95210721ae0dd", "type": "Subscription", "description": "notify of new events", "entities": [ { "type": "Event" } ], "notificationTrigger": "entityCreated", "notification": { "attributes": [ "id" ], "format": "keyValues", "endpoint": { "uri": "http://anotherservice:1234/hook/events", "accept": "application/json" } }, "@context": "你实际使用的JSON-LD上下文地址" } ]
2 docker-compose 内部网络连通性问题
- 进入Orion-LD容器内部,执行
curl http://anotherservice:1234/hook/events验证网络连通性,确认服务名、端口、接口路径拼写完全正确,注意路径大小写敏感。 - 确认你填写的端口是目标服务容器内部暴露的端口,不是映射到宿主机的端口,docker-compose内部服务调用默认使用容器内部端口。
- 若目标服务接口有鉴权逻辑,需要在订阅的
endpoint配置项中补充对应的鉴权参数,或者确认该webhook接口允许无鉴权调用。
3 实体写入与日志排查
- 创建
Event类型实体后,先调用Orion-LD的实体查询接口,确认实体确实写入成功,且实体的type字段、关联的上下文和订阅配置完全匹配。 - 查看Orion-LD容器日志,执行
docker logs <你的Orion-LD容器名>,搜索对应订阅ID或者notification关键字,可以直接区分是订阅没有触发,还是通知发送失败。
4 版本已知问题
Orion-LD 0.8.0属于较早期的版本,存在多个订阅触发逻辑的已知bug,若以上排查项全部确认无误,建议升级到最新稳定版复测。
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

