Fiware Draco - 订阅仅适用于第一个有效负载。只有第一个有效负载保存在历史记录中 mongodb
Fiware Draco - Subscription works only for the first payload. Only the first payload is saved in historical mongodb
我试图在 Mongo 中保存历史上下文数据,但没有成功。只有发送到 Draco 的第一个有效负载会保存到 MongoDB 以获取历史数据,但 Mongo 不会对属性更新做出反应。
测试使用的版本:Orion-LD 0.8.0 版,Mongo 4.4 版,Draco 1.3.6 版。
我也用 Mongo 的 3.4 版本测试过它,行为是一样的。
你能帮我解决一个问题吗?
以下是我执行的步骤:
创建 Draco 订阅:
curl --location --request POST 'http://localhost:1026/v2/subscriptions' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw '{
"description": "Notify Draco of all context changes",
"subject": {
"entities": [
{
"idPattern": ".*"
}
]
},
"notification": {
"http": {
"url": "http://10.0.0.5:5050/v2/notify"
}
},
"throttling": 0
}'
创建实体:
curl --location --request POST 'http://localhost:1026/v2/entities' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw ' {
"id":"urn:ngsi-ld:Product:0102", "type":"Product",
"name":{"type":"Text", "value":"Lemonade"},
"size":{"type":"Text", "value": "S"},
"price":{"type":"Integer", "value": 99}
}'
覆盖属性值的值:
curl --location --request PUT 'http://localhost:1026/v2/entities/urn:ngsi-ld:Product:0102/attrs' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw '{
"price":{"type":"Integer", "value": 110}
}'
LISTEN_HTTP 处理器:
LISTEN_HTTP
NGSITOMONGO 处理器:NGSITOMONGO
模板:Template
Mongo数据库:mongo
我们不使用那个精确的堆栈,但我们有许多生产部署通过使用 FIWARE Orion(v2 API)和 FIWARE Cygnus(NGSIMongo Sink for historical)将上下文历史数据保存在 MongoDb原始数据,以及 MongoDB 处聚合数据的 NGSISTH Sink。
也许这有帮助。
在新版本的Draco 2.1.0中修复了这个bug。您可以在官方存储库中查看代码。发布 link 是 https://github.com/ging/fiware-draco/releases/tag/2.1.0
此外,您可以通过使用 docker pull ging/fiware-draco:2.1.0.
拉取此版本可用的 docker 图像。
您还可以使用 Draco 内部可用的 Mongo-Tutorial 模板,您已经预先配置了在 MongoDB 中持续存在所需的处理器。
您必须考虑的一件事是,新版本的 Draco 与 1.15.3 版本的 NiFi 保持一致,您需要首先登录才能使用默认设置访问 Web UI凭据(用户:admin,密码:pass1234567890)。您可以查看官方文档以获取更多信息https://fiware-draco.readthedocs.io/en/latest/
我试图在 Mongo 中保存历史上下文数据,但没有成功。只有发送到 Draco 的第一个有效负载会保存到 MongoDB 以获取历史数据,但 Mongo 不会对属性更新做出反应。 测试使用的版本:Orion-LD 0.8.0 版,Mongo 4.4 版,Draco 1.3.6 版。 我也用 Mongo 的 3.4 版本测试过它,行为是一样的。
你能帮我解决一个问题吗?
以下是我执行的步骤:
创建 Draco 订阅:
curl --location --request POST 'http://localhost:1026/v2/subscriptions' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw '{
"description": "Notify Draco of all context changes",
"subject": {
"entities": [
{
"idPattern": ".*"
}
]
},
"notification": {
"http": {
"url": "http://10.0.0.5:5050/v2/notify"
}
},
"throttling": 0
}'
创建实体:
curl --location --request POST 'http://localhost:1026/v2/entities' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw ' {
"id":"urn:ngsi-ld:Product:0102", "type":"Product",
"name":{"type":"Text", "value":"Lemonade"},
"size":{"type":"Text", "value": "S"},
"price":{"type":"Integer", "value": 99}
}'
覆盖属性值的值:
curl --location --request PUT 'http://localhost:1026/v2/entities/urn:ngsi-ld:Product:0102/attrs' \
--header 'Fiware-Service: test' \
--header 'Fiware-ServicePath: /openiot' \
--header 'Content-Type: application/json' \
--data-raw '{
"price":{"type":"Integer", "value": 110}
}'
LISTEN_HTTP 处理器: LISTEN_HTTP
NGSITOMONGO 处理器:NGSITOMONGO
模板:Template
Mongo数据库:mongo
我们不使用那个精确的堆栈,但我们有许多生产部署通过使用 FIWARE Orion(v2 API)和 FIWARE Cygnus(NGSIMongo Sink for historical)将上下文历史数据保存在 MongoDb原始数据,以及 MongoDB 处聚合数据的 NGSISTH Sink。
也许这有帮助。
在新版本的Draco 2.1.0中修复了这个bug。您可以在官方存储库中查看代码。发布 link 是 https://github.com/ging/fiware-draco/releases/tag/2.1.0
此外,您可以通过使用 docker pull ging/fiware-draco:2.1.0.
拉取此版本可用的 docker 图像。您还可以使用 Draco 内部可用的 Mongo-Tutorial 模板,您已经预先配置了在 MongoDB 中持续存在所需的处理器。
您必须考虑的一件事是,新版本的 Draco 与 1.15.3 版本的 NiFi 保持一致,您需要首先登录才能使用默认设置访问 Web UI凭据(用户:admin,密码:pass1234567890)。您可以查看官方文档以获取更多信息https://fiware-draco.readthedocs.io/en/latest/