fiware-orion - 发布后订阅状态发生变化

标签 fiware-orion fiware-cygnus

成功安装 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 ]

[ body ]

{
    "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 ]

[ body ]

{
  "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
}

检查之前创建的订阅时。我发现它是:“status”:“active”;这很棒。

帖子

在两种类型的订阅(即通过 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 ]

[ body ]

{
    "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 日志

.
.
.
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)

有解决这个问题的提示吗?

最佳答案

显然一切都与通知引用有关。通过更改相应 IP 地址的本地主机,我的订阅在任何帖子后保持事件状态(即保持“状态”:“事件”)。我还测试了通知/触发从 Orion 到第三方服务器的通知成功以及 Cosmos。

关于fiware-orion - 发布后订阅状态发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41914762/

相关文章:

centos7 - 固件:无法将 cygnus 作为服务启动

fiware - 为同一实体插入值序列

fiware - 使用不同的日期将历史数据发布到 Orion Context Broker

固件iotagent : How to send measure from a device?

fiware - 取消 Cygnus 订阅

fiware-orion - 固件猎户座 : return subscription id

java - 找不到 Fiware Cygnus 处理程序

kubernetes - 在 Kubernetes 中启动 FIWARE Orion

fiware - 固件 Scorpio Broker 和 Orion Broker 之间的区别

mysql - Cygnus 不保留 MySql 数据库中的数据