FIWARE - Контекстный брокер Orion - Невозможно создать подписку - Обратный вызов отсутствует
Я работаю с брокером контекста Orion и пытаюсь добавить новую подписку, но получаю сообщение об ошибке, что обратный вызов отсутствует, хотя я его и предоставил.
Вот сущности, которые у меня есть
$ curl localhost:1026/v2/entities -s -S --header 'Accept: application/json' | python -mjson.tool
[
{
"id": "Room1",
"pressure": {
"metadata": {},
"type": "Integer",
"value": 720
},
"temperature": {
"metadata": {},
"type": "Float",
"value": 23
},
"type": "Room"
},
{
"id": "Room2",
"pressure": {
"metadata": {},
"type": "Integer",
"value": 711
},
"temperature": {
"metadata": {},
"type": "Float",
"value": 21
},
"type": "Room"
}
]
А вот и призыв к созданию новой подписки и последующей ошибке:
$ 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": {
> "attributes": ["temperature"]
> }
> },
> "notification": {
> "http": {
> "url": "http://localhost:1028/accumulate"
> },
> "attrs": [
> "temperature",
> "pressure"
> ]
> },
> "expires": "2040-01-01T14:00:00.00Z",
> "throttling": 5
> }
> EOF
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 1026 (#0)
> POST /v2/subscriptions HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:1026
> Accept: */*
> Content-Type: application/json
> Content-Length: 417
>
* upload completely sent off: 417 out of 417 bytes
< HTTP/1.1 400 Bad Request
< Connection: Keep-Alive
< Content-Length: 58
< Content-Type: application/json
< Date: Mon, 08 Aug 2016 10:11:39 GMT
<
* Connection #0 to host localhost left intact
{"error":"BadRequest","description":"callback is missing"}
1 ответ
Прежде всего, запрос на создание сущностей (POST /v2/entity) принимает не вектор сущностей, а один объект. Этот запрос должен выдавать ошибку (к сожалению, брокер отвечает ошибкой разбора JSON, которая не на 100% верна). Измените запрос на создание только Room1 и добавьте еще один запрос, если вы также хотите создать Room2.
Теперь создание подписки выглядит хорошо. Я провел тест с вашим точным запросом, и он работал просто отлично.
Теперь, чтобы попытаться понять вашу проблему, я прошу вас добавить некоторую информацию в описание вашего вопроса:
- Какую версию брокера контекста Orion вы используете? (Использование:
curl localhost:1026/version
) - возможно, вы захотите обновить его до более новой версии, если она слишком старая (1.2.0 является последней версией). - Трассировки, которые ваш брокер производит при получении запроса на создание подписки. (Использование:
cat /tmp/contextBroker.log
). Если вы запускаете брокера самостоятельно, запустите его со всеми трассировками (используйте опции:-t 0-255 -logLevel DEBUG
)
Наконец, извините за задержку, время отпуска...