2015-01-26 2 views
2

Я пытаюсь создать подписку на атрибуты существующего объекта в OrionCB.Подписки не отображаются, хотя сообщается об успехе

URL http://130.206.80.120:1026/NGSI10/subscribeContext

Метод POST

Заголовки Content-Type: применение/XML

тело

<?xml version="1.0"?> 
<subscribeContextRequest> 
    <entityIdList> 
    <entityId type="finesce_meteo" isPattern="false"> 
     <id>finesce_meteo</id> 
    </entityId> 
    </entityIdList> 
    <attributeList> 
    <attribute>precip</attribute> 
    </attributeList> 
    <reference>http://localhost:5050/notify</reference> 
    <duration>P100Y</duration> 
    <notifyConditions> 
    <notifyCondition> 
     <type>ONCHANGE</type> 
     <condValueList> 
     <condValue>precip</condValue> 
     </condValueList> 
    </notifyCondition> 
    </notifyConditions> 
    <throttling>PT5S</throttling> 
</subscribeContextRequest> 

Эта операция получает 200 OK заголовков коды, с этим телом :

<subscribeContextResponse> 
    <subscribeResponse> 
    <subscriptionId>54c5f049286043784451d08b</subscriptionId> 
    <duration>P100Y</duration> 
    <throttling>PT5S</throttling> 
    </subscribeResponse> 
</subscribeContextResponse> 

Проблема в том, когда я пытаюсь проверить, создано ли оно. Когда я пытаюсь перечислить подписки, он не появляется. Я использую эту строку:

echo 'db.csubs.find().pretty()' | mongo orion 

Но если удалить эту подписку с unsubscribeContextRequest, я получаю 200 OK кода. Он предполагает, что эта подписка существует.

Тот факт, что существует подписка (потому что она создана и удалена ok), и не появляется в тот момент, когда я перечисляю подписки, встречается редко.

Пожалуйста, есть что-то неправильно?

Я пытаюсь запустить этот whit cygnus proccess, и тот же процесс с cygnus остановился, получив тот же результат.

С уважением

+0

Пожалуйста, отредактируйте ваш вопрос, чтобы отобразить командную строку, которая запустила Контекстный брокер Orion, как правило, результат 'ps ax | grep contextBroker'. – fgalan

+0

[root @ orioncb ~] # ps ax | grep contextBroker 6889 pts/1 S + 0:00 grep contextBroker 28707? Ssl 672: 56/usr/bin/contextBroker -port 1026 -logDir/var/log/contextBroker -pidpath /var/log/contextBroker/contextBroker.pid -dbhost localhost -db orion – user2677744

ответ

0

Монго find() команда возвращает первые 20 результатов, соответствующих запросу, таким образом, если у вас есть больше подписчиков, чем что (например, более 30), может случиться так, что конкретный один вы ищете не извлекается. (С помощью интерактивной оболочки mongo вы можете получить следующую партию из 20 результатов с помощью команды it, но не знаете, как это работает, когда mongo работает в неинтерактивном режиме).

Таким образом, я бы рекомендовал включить идентификатор, который вы ищете в запросе. Например, если идентификатор вы получаете в запросе Orion является «54c90821286043500575eecf», то вы могли бы использовать:

echo 'db.csubs.find({_id: ObjectId("54c90821286043500575eecf")}).pretty()' | mongo orion 

Morevoer, как вы ожидаете только один результат, вы можете использовать findOne() и сохранить использование pretty(), т.е. :

echo 'db.csubs.findOne({_id: ObjectId("54c90821286043500575eecf")})' | mongo orion 
Смежные вопросы