到目前为止,我已将ContextBroker配置为向Cygnus发送数据,而Cygnus又按数据库中的默认名称保存数据。
但是如果我想用特定的表来定位特定的数据库呢?
我知道我必须设置:
dbName=<fiware-service>
tableName=<fiware-servicePath>_<entityId>_<entityType>
我不知道那个文件在哪里,我知道它不在/ etc / sysconfig / contextBroker中,因为该文件夹不存在。
EDIT1:这是我的updatecontext:
(curl localhost:1026/NGSI10/updateContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Fiware-Service: FiwareDatabase' --header 'Fiware-ServicePath: /AllSensors' -d @- ) <<EOF
{
"contextElements": [
{
"type": "Television",
"isPattern": "false",
"id": "TV2",
"attributes": [
{
"name": "channel",
"type": "integer",
"value": "14"
},
{
"name": "volume",
"type": "float",
"value": "9"
}
]
}
],
"updateAction": "APPEND"
}
EOF
正如我所说,表确实会自动创建,但数据库不会。
答案 0 :(得分:1)
使用实体创建REST请求中的HTTP标头,在实体创建时设置Fiware-Service和Fiware-ServicePath。请查看Orion用户手册中的以下部分:
UPDATE :例如,为了在服务“servA”和服务路径“/ path1”中创建实体,您可以使用the create entity section in the manual中显示的示例添加两个附加HTTP标头到卷曲线:
(curl localhost:1026/v1/updateContext -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Fiware-Service: servA' --header 'Fiware-ServicePath: /path1' -d @- | python -mjson.tool) <<EOF
...
这将在以下MySQL数据库/表中插入信息(假设Cygnus配置正确,订阅正确等):
dbName=servA
tableName=path1_<entityId>_<entityType>
请注意,默认行为是将每个实体的信息存储在不同的表中。可以更改默认行为,但如果您对这种可能性感兴趣,请在StackOverflow中创建一个新问题来处理。