【发布时间】:2017-01-28 20:58:16
【问题描述】:
在成功安装 Cygnus 连接器并测试订阅创建之后。
以下文件:
agent_1.conf
cygnus-ngsi.sources = http-source
cygnus-ngsi.sinks = hdfs-sink
cygnus-ngsi.channels = hdfs-channel
cygnus-ngsi.sources.http-source.type = org.apache.flume.source.http.HTTPSource
cygnus-ngsi.sources.http-source.channels = hdfs-channel
cygnus-ngsi.sources.http-source.port = 5050
cygnus-ngsi.sources.http-source.handler = com.telefonica.iot.cygnus.handlers.NGSIRestHandler
cygnus-ngsi.sources.http-source.handler.notification_target = /notify
cygnus-ngsi.sources.http-source.handler.default_service = [ PERSONALIZED SERVICE NAME ]
cygnus-ngsi.sources.http-source.handler.default_service_path = /[ PERSONAL SERVICE PATH ]
cygnus-ngsi.sources.http-source.handler.events_ttl = 10
cygnus-ngsi.sources.http-source.interceptors = ts gi
cygnus-ngsi.sources.http-source.interceptors.ts.type = timestamp
cygnus-ngsi.sources.http-source.interceptors.gi.type = com.telefonica.iot.cygnus.interceptors.NGSIGroupingInterceptor$Builder
cygnus-ngsi.sources.http-source.interceptors.gi.grouping_rules_conf_file = /usr/cygnus/conf/grouping_rules.conf
cygnus-ngsi.sinks.hdfs-sink.type = com.telefonica.iot.cygnus.sinks.NGSIHDFSSink
cygnus-ngsi.sinks.hdfs-sink.channel = hdfs-channel
cygnus-ngsi.sinks.hdfs-sink.hdfs_host = storage.cosmos.lab.fiware.org
cygnus-ngsi.sinks.hdfs-sink.hdfs_port = 14000
cygnus-ngsi.sinks.hdfs-sink.hdfs_username = [ MY USERNAME ]
cygnus-ngsi.sinks.hdfs-sink.oauth2_token = [ MY TOKEN ]
cygnus-ngsi.channels.hdfs-channel.type = com.telefonica.iot.cygnus.channels.CygnusMemoryChannel
cygnus-ngsi.channels.hdfs-channel.capacity = 1000
cygnus-ngsi.channels.hdfs-channel.transactionCapacity = 100
cygnus_interface_1.conf
CYGNUS_USER=cygnus
CONFIG_FOLDER=/usr/cygnus/conf
CONFIG_FILE=/usr/cygnus/conf/agent_1.conf
AGENT_NAME=cygnus-ngsi
LOGFILE_NAME=cygnus.log
ADMIN_PORT=8081
POLLING_INTERVAL=30
使用 NGSI V1 进行测试
我已尝试创建如下所示的订阅:
[发布]
http://[ MY ORION IP ]:1026/v1/subscribeContext
[标题]
Content-Type:application/json
Accept: application/json
Fiware-Service: [ PERSONALIZED SERVICE NAME ]
Fiware-ServicePath: /[ PERSONALIZED PATH ]
[身体]
{
"entities": [
{
"type": "PhysicalTest",
"isPattern": "false",
"id": "TEMPORAL"
}
],
"attributes": [
"test"
],
"reference": "http://localhost:5050/notify",
"duration": "P1M",
"notifyConditions": [
{
"type": "ONCHANGE",
"condValues": [
"test"
]
}
],
"throttling": "PT1S"
}
使用 NGSI V2 进行测试
我也尝试过创建订阅,如下所示:
[发布]
http://[ MY ORION IP ]:1026/v2/subscriptions
[标题]
Content-Type:application/json
Accept: application/json
Fiware-Service: [ PERSONALIZED SERVICE NAME ]
Fiware-ServicePath: /[ PERSONALIZED PATH ]
[身体]
{
"description": "Subscription to store physical tests",
"subject": {
"entities": [
{
"type": "PhysicalTest",
"isPattern": "false",
"id": "TEMPORAL"
}
],
"condition": {
"attrs": [
"test"
],
"expression": {
"q": "test!=0"
}
}
},
"notification": {
"http": {
"url": "http://localhost:5050/notify"
},
"attrs": [
"test"
]
},
"expires": "2018-04-05T14:00:00.00Z",
"throttling": 5
}
检查以前创建的订阅时。我发现它是:“状态”:“活动”;这很棒。
帖子
在两种类型的订阅中(即通过 v1 和 v2),我发布如下所示:
[发布]
http://[ MY ORION IP ]:1026/v2/entities
[标题]
Content-Type:application/json
Accept: application/json
Fiware-Service: [ PERSONALIZED SERVICE NAME ]
Fiware-ServicePath: /[ PERSONALIZED PATH ]
[身体]
{
"id": "TEMPORAL",
"type": "PhysicalTest",
"test": {
"value": "Timed Up and Go",
"type": "test-type"
},
"sensor": {
"value": "Accelerometer",
"type": "sensor-type",
"metadata": {
"speed": {
"value": "80",
"type": "hz"
}
}
},
"data": {
"value": "0.0635477304458618,0.00490868091583252,0.0516815185546875,2016-09-08T10:51:41.341Z-0500",
"type": "sensor-data"
}
}
失败的结果
两种情况下我的订阅状态转为:“status”:“failed”
此外,没有证据表明 Cosmos 在查看应存储实体文件的目录时正在存储任何内容:
curl -X GET "http://storage.cosmos.lab.fiware.org:14000/webhdfs/v1/user/[ MY USERNAME ]?op=liststatus&user.name=[ MY USERNAME ]" -H "X-Auth-Token: [ MY TOKEN ]" | python -m json.tool
只为记录
我已经通过以下方式成功测试了 Cygnus 连接:
./notification-json-simple.sh http://localhost:5050/notify
因此,我认为它们可能与我的订阅机制有关,但仍然找不到故障。
从 /tmp/ContextBroker.log 检索到 ORION LOG
.
.
.
time=Sunday 29 Jan 19:41:07 2017.697Z | lvl=WARN | corr=N/A | trans=1485717075-957-00000000006 | from=pending | srv=pending | subsrv=pending | comp=Orion | op=AlarmManager.cpp[328]:notificationError | msg=Raising alarm NotificationError localhost:5050/notify: (curl_easy_perform failed: Couldn't connect to server)
有解决这个问题的提示吗?
【问题讨论】:
-
两个猜测:首先,您是否尝试在订阅创建中指定实体id(不使用“idPattern”)?您可以进行如下测试:
"entities": [ { "id": "ypioca", "type": "room" } ],其次,尝试使用 /v1 而不是 /v2 创建订阅。我在使用 STH Comet 时遇到了这个问题:似乎可以使用 /v1 api。 -
我删除了之前的评论,因为我测试错误。我的最后一次尝试是设置“idPattern”:“false”,我的订阅现在仍然有效:)。但是,仍然无法检索任何应该存储在 Cosmos 上的内容,你是怎么做到的?
-
您是否尝试过使用
/v1/subscribeContext而不是我所说的/v2/subscriptions注册订阅?并放置实体ID?另外,我认为你把“idPattern”放在哪里是“isPattern”。 -
我尝试使用 v1/subscribeContext 与以前相同的行为,“status”:“active”,但发布后变为“status”:“failed”
-
我使用订阅的机制 v1 和 v2 编辑了帖子,但没有成功
标签: fiware-orion fiware-cygnus