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)

Наконец, извините за задержку, время отпуска...

Другие вопросы по тегам