累积服务器 - 无操作
Accumulation Server - no action
我很难使累积服务器正常工作。我启动了它,但是如果 OCB 收到例如新订阅,它不会给出任何结果。该过程如下所示:
我开始acc。服务器如 tutorial 中所述,来自 OCB 的新克隆 repo。结果我进入控制台:
tmp@tmp-VirtualBox:~/fiware-orion/scripts$ ./accumulator-server.py --port 1028 --url /accumulate --host ::1 --pretty-print -v
verbose mode is on
port: 1028
host: ::1
server_url: /accumulate
pretty: True
https: False
Running on http://[::1]:1028/ (Press CTRL+C to
之后什么都没有发生。如果我进行订阅(教程中最基本的订阅),我会在发出请求的媒体中得到响应:
< HTTP/1.1 201 Created
< Connection: Keep-Alive
< Content-Length: 0
< Location: /v2/subscriptions/5ab5248e50bfc821d0a1b1e0
< Fiware-Correlator: 45df4ff6-2eb3-11e8-912c-0242ac110003
< Date: Fri, 23 Mar 2018 16:00:14 GMT
然而,这可能是罪魁祸首,订阅状态设置为失败(通过要求列出所有订阅并在 Orion Context Explorer 中进行检查)。并且不能更改为非活动状态。一切都是 运行 的预期(我猜)。 OCB 运行 作为安装在 LUbuntu 上的 docker 中的容器,运行良好。这可能是我的错误,因为我正在使用 Insomnia 与 OCB 进行通信并且可能会混合一些东西,但是 OCB 的响应是一切正常。任何帮助将不胜感激。
编辑:
累积服务器不工作。我得到了:
* Trying 127.0.0.1...
* TCP_NODELAY set
* connect to 127.0.0.1 port 1028 failed: Connection refused
* Failed to connect to localhost port 1028: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 1028
在 运行 检查命令之后 (curl -vvvv localhost:1028/accumulate)。
关于订阅我 POST 这个负载:
{
"description": "A subscription to get info about Room1",
"subject": {
"entities": [
{
"id": "Room1",
"type": "Room"
}
],
"condition": {
"attrs": [
"pressure"
]
}
},
"notification": {
"http": {
"url": "http://localhost:1028/accumulate"
},
"attrs": [
"temperature"
]
},
"expires": "2040-01-01T14:00:00.00Z",
"throttling": 5
}
到 localhost:1026/v2/subscriptions URL。预先实体及其参数和类型都可以。创建后,我请求获取所有订阅并获取:
[
{
"id": "5ab7d819209f52528cc2faf7",
"description": "A subscription to get info about Room1",
"expires": "2040-01-01T14:00:00.00Z",
"status": "failed",
"subject": {
"entities": [
{
"id": "Room1",
"type": "Room"
}
],
"condition": {
"attrs": [
"pressure"
]
}
},
"notification": {
"timesSent": 1,
"lastNotification": "2018-03-25T17:10:49.00Z",
"attrs": [
"temperature"
],
"attrsFormat": "normalized",
"http": {
"url": "http://localhost:1028/accumulate"
},
"lastFailure": "2018-03-25T17:10:49.00Z"
},
"throttling": 5
}
]
我猜他失败了,因为没有发送通知,但我不确定。
我看到这里有两个问题。
首先,蓄能器不工作。 Maybe 是一个奇怪的网络问题,它将 IPv4 名称查找(即 curl localhost:1028/accumulate
被 OS 解决为 curl 127.0.0.1:1028/accumulate
)与仅在 IPv6 接口中侦听的累加器(即仅在 ::1
但不在 127.0.0.1
中)。我知道你是 运行 curl 命令 在同一主机 中,累加器正在侦听,不是吗?
我的建议是使用 --host
累加器参数(e.e。--host 127.0.0.1
)并在 curl 命令中使用直接 IP 以使其工作。
第二个问题是由于您使用 localhost
作为通知端点:
"url": "http://localhost:1028/accumulate"
这意味着端口 1028 在 docker 容器 内,其中 Orion 是 运行。但是,据我了解,您的累加器服务器在容器外 容器主机 中运行。因此,您应该使用允许您从容器到达主机的 IP(并确保没有网络流量拦截器到位,例如防火墙)。所以,你的问题在这里转化为 "How to reach docker containers host from a docket container"(我不确定答案,但应该有很多关于该主题的文献:)
累积服务器需要运行在可用的物理接口上。简而言之,使用环回接口与 Orion Context Broker 运行 作为 Docker 容器进行交互几乎是不可能的。可以肯定的是,就主机虚拟化而言 运行ning 主机已经到位(就像我的情况一样)。
可以使用
在 linux 中检查可用接口
ip addr
选择一个符合我们要求的后,我们 运行 累加器如前所述,但是它的 ip 地址是我们选择的那个。然后我们使用启动 acc 时使用的地址添加对 OCB 的订阅。服务器很好,通信很好。
我很难使累积服务器正常工作。我启动了它,但是如果 OCB 收到例如新订阅,它不会给出任何结果。该过程如下所示:
我开始acc。服务器如 tutorial 中所述,来自 OCB 的新克隆 repo。结果我进入控制台:
tmp@tmp-VirtualBox:~/fiware-orion/scripts$ ./accumulator-server.py --port 1028 --url /accumulate --host ::1 --pretty-print -v
verbose mode is on
port: 1028
host: ::1
server_url: /accumulate
pretty: True
https: False
Running on http://[::1]:1028/ (Press CTRL+C to
之后什么都没有发生。如果我进行订阅(教程中最基本的订阅),我会在发出请求的媒体中得到响应:
< HTTP/1.1 201 Created
< Connection: Keep-Alive
< Content-Length: 0
< Location: /v2/subscriptions/5ab5248e50bfc821d0a1b1e0
< Fiware-Correlator: 45df4ff6-2eb3-11e8-912c-0242ac110003
< Date: Fri, 23 Mar 2018 16:00:14 GMT
然而,这可能是罪魁祸首,订阅状态设置为失败(通过要求列出所有订阅并在 Orion Context Explorer 中进行检查)。并且不能更改为非活动状态。一切都是 运行 的预期(我猜)。 OCB 运行 作为安装在 LUbuntu 上的 docker 中的容器,运行良好。这可能是我的错误,因为我正在使用 Insomnia 与 OCB 进行通信并且可能会混合一些东西,但是 OCB 的响应是一切正常。任何帮助将不胜感激。
编辑: 累积服务器不工作。我得到了:
* Trying 127.0.0.1...
* TCP_NODELAY set
* connect to 127.0.0.1 port 1028 failed: Connection refused
* Failed to connect to localhost port 1028: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 1028
在 运行 检查命令之后 (curl -vvvv localhost:1028/accumulate)。
关于订阅我 POST 这个负载:
{
"description": "A subscription to get info about Room1",
"subject": {
"entities": [
{
"id": "Room1",
"type": "Room"
}
],
"condition": {
"attrs": [
"pressure"
]
}
},
"notification": {
"http": {
"url": "http://localhost:1028/accumulate"
},
"attrs": [
"temperature"
]
},
"expires": "2040-01-01T14:00:00.00Z",
"throttling": 5
}
到 localhost:1026/v2/subscriptions URL。预先实体及其参数和类型都可以。创建后,我请求获取所有订阅并获取:
[
{
"id": "5ab7d819209f52528cc2faf7",
"description": "A subscription to get info about Room1",
"expires": "2040-01-01T14:00:00.00Z",
"status": "failed",
"subject": {
"entities": [
{
"id": "Room1",
"type": "Room"
}
],
"condition": {
"attrs": [
"pressure"
]
}
},
"notification": {
"timesSent": 1,
"lastNotification": "2018-03-25T17:10:49.00Z",
"attrs": [
"temperature"
],
"attrsFormat": "normalized",
"http": {
"url": "http://localhost:1028/accumulate"
},
"lastFailure": "2018-03-25T17:10:49.00Z"
},
"throttling": 5
}
]
我猜他失败了,因为没有发送通知,但我不确定。
我看到这里有两个问题。
首先,蓄能器不工作。 Maybe 是一个奇怪的网络问题,它将 IPv4 名称查找(即 curl localhost:1028/accumulate
被 OS 解决为 curl 127.0.0.1:1028/accumulate
)与仅在 IPv6 接口中侦听的累加器(即仅在 ::1
但不在 127.0.0.1
中)。我知道你是 运行 curl 命令 在同一主机 中,累加器正在侦听,不是吗?
我的建议是使用 --host
累加器参数(e.e。--host 127.0.0.1
)并在 curl 命令中使用直接 IP 以使其工作。
第二个问题是由于您使用 localhost
作为通知端点:
"url": "http://localhost:1028/accumulate"
这意味着端口 1028 在 docker 容器 内,其中 Orion 是 运行。但是,据我了解,您的累加器服务器在容器外 容器主机 中运行。因此,您应该使用允许您从容器到达主机的 IP(并确保没有网络流量拦截器到位,例如防火墙)。所以,你的问题在这里转化为 "How to reach docker containers host from a docket container"(我不确定答案,但应该有很多关于该主题的文献:)
累积服务器需要运行在可用的物理接口上。简而言之,使用环回接口与 Orion Context Broker 运行 作为 Docker 容器进行交互几乎是不可能的。可以肯定的是,就主机虚拟化而言 运行ning 主机已经到位(就像我的情况一样)。
可以使用
在 linux 中检查可用接口 ip addr
选择一个符合我们要求的后,我们 运行 累加器如前所述,但是它的 ip 地址是我们选择的那个。然后我们使用启动 acc 时使用的地址添加对 OCB 的订阅。服务器很好,通信很好。