我几周来一直在努力解决这个问题,我希望你能帮助我。
在我的Ubuntu服务器(16.04)上,我安装了Docker。 安装了三个docker容器:
现在,contextBroker正在将一些json格式数据推送到mongoDB,这很好。
我从流利的ui开始,所以我真的很新。
我想要什么?
我正在尝试使用fluentd-ui将这些数据从contextBroker推送到mongoDB。 Fluentd-ui应该从contextBroker获取这些数据,以便我可以进一步处理这些数据。我试图将这些数据推送到另一个数据库,因为我必须做其他事情(可能再次是mongoDB,但另一个)或/还将这些数据推送到elasticsearch / Kibana(我必须做一些分析)。
这个想法是,contextBroker仍在将数据推送到原始的mongoDB,但是流利的人也能以某种方式从contextBroker接收这些数据。
这甚至可能吗? 对我来说也可以,当流畅的人被用作“中间人”时,它仍然应该将数据推送到mongoDB 和其他地方(elasticsearch等)。
我是如何运行容器的?
MongoDB的:
sudo docker run --log-driver=fluentd --log-opt tag=docker.mymongodb --name mymongodb -d mongo
ContextBroker:
sudo docker run -d --name cbdocker --link mymongodb:mymongodb --log-driver=fluentd --log-opt tag=docker.mycontextbroker -p 1026:1026 fiware/orion -dbhost mymongodb -logLevel DEBUG
我尝试了什么?
我试过了:
<source>
type forward
port 24224
</source>
<match docker.*>
type stdout
</match>
以上仅打印mongodb的日志和contextbroker本身。但不是推送的数据(我还添加了mongodb,只是为了检查它是否也能像这样工作)
我认为这是有道理的,但我必须订阅上下文经纪人,但我该怎么做呢?能够流利地做到这一点吗?你认为我必须做一些类似于Java应用程序的东西,它从contextBroker订阅并且流畅地监听这个应用程序,还是有更好的解决方案?
老实说,如果我只能收到这些数据,我会很高兴,所以我可以先用一个简单的日志文件打印出来(其余的我稍后可以查看)。
非常感谢你!
答案 0 :(得分:1)
如果你想要的是在应用程序中接收数据,然后登录或做一些更复杂的事情,你可以使用猎户座subscriptions机制。
使用Orion的订阅机制,您可以在特定上下文更改时收到通知,然后接收所有上下文信息。
例如:
curl -v localhost:1026/v2/subscriptions -s -S --header 'Content-Type: application/json' \
-d @- <<EOF
{
"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
}
EOF
在前面的示例中,您告诉Orion Context Broker每当“Room”类型的“Romo1”上下文的“pressure”属性发生更改时通知您,然后只向您发送“temperature”信息。
如果您想向您发送所有信息,您可以在“通知”字段中留下“attrs”字段,清空,然后Orion会向您发送整个上下文信息。
最后,在字段notification.url中,您必须指明要通知的应用程序的URL。请记住,如果Orion在Docker Container中工作,那么应该能够看到您的应用程序。例如,您应该在与猎户座相同的泊坞网络中运行您的应用程序。
我建议您阅读Orion的documentation有关订阅的信息,以便深入了解。它非常好而且清晰。
可悲的是,我没有熟练使用u-ui的经验所以我不知道你是否可以使用这种机制直接与Orion联系。
我希望我能帮到你。