累积服务器 - 无动作

时间:2018-03-23 21:57:28

标签: fiware-orion

我使累积服务器工作有困难。我启动了它,但是如果OCB收到例如新订阅,它不会给出任何结果。这个过程如下:

我开始acc。服务器在tutorial从新近克隆的OCB回购中得知。结果我进入了控制台:

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作为Docker中的容器运行,安装在LUbuntu上,并且运行良好。这可能是我的错误,因为我使用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

运行check命令后(curl -vvvv localhost:1028 / accumulate)。

关于订阅我发布此有效负载:

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

我猜他失败了因为没有发送通知,但我不确定。

2 个答案:

答案 0 :(得分:1)

我在这里看到两个问题。

首先,累加器不工作。可能是一个奇怪的网络问题,它结合了IPv4名称查找(即,curl localhost:1028/accumulate由OS解决为curl 127.0.0.1:1028/accumulate,累加器仅在IPv6接口中监听(即仅在::1但是不在127.0.0.1)。我知道你在同一个主机中运行curl commmand ,累加器正在监听,不是吗?

我的推荐是使用--host accumualtor参数(例如--host 127.0.0.1)并在curl命令中使用直接IP以使其正常工作。

第二个问题是由于您使用localhost作为通知终点:

 "url": "http://localhost:1028/accumulate"

这意味着在Orion运行的docker容器中的端口1028 。但是,据我所知,您的累加器服务器在容器外部<容器主机中运行。因此,您应该使用允许您从容器到达主机的IP(并确保没有网络流量阻止程序,例如防火墙)。所以,你的问题转化为&#34;如何从一个文件夹容器到达docker容器主机&#34; (我不确定答案,但应该有关于该主题的大量文献:)

答案 1 :(得分:0)

累积服务器需要在可用的物理接口上运行。简单地说,使用环回接口与作为Docker容器运行的Orion Context Broker进行交互几乎是不可能的。可以肯定的是,就运行主机的主机而言,虚拟化已经就位(根据我的情况)。

可用

在linux中检查可用的接口
    ip addr

在选择了符合我们要求的设备后,我们按照之前的说明运行了累加器,但是它的ip地址是我们选择的。然后,我们使用启动acc时使用的地址向OCB添加订阅。服务器,一切顺利,沟通还可以。