2

到目前为止,我已将 ContextBroker 配置为将数据发送到 Cygnus,而 Cygnus 又以默认名称将数据保存在数据库中。

但是,如果我想使用特定表来定位特定数据库怎么办?

我知道我必须设置:

dbName=<fiware-service> 
tableName=<fiware-servicePath>_<entityId>_<entityType>

我不知道该文件在哪里,并且我知道它不在 /etc/sysconfig/contextBroker 中,因为该文件夹不存在。

EDIT1:这是我的更新上下文:

(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

正如我所说,表确实会自动创建,但数据库不会。

4

1 回答 1

1

Fiware-Service 和 Fiware-ServicePath 在实体创建时使用实体创建 REST 请求中的 HTTP 标头设置。请查看 Orion 用户手册中的以下部分:

更新:例如,为了在服务“servA”和服务路径“/path1”中创建一个实体,您可以使用手册中创建实体部分中显示的示例,在 curl 行中添加两个额外的 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 中创建一个新问题来处理该问题。

于 2015-04-23T08:59:33.977 回答