Подписка не появляется, хотя сообщается об успехе

Я пытаюсь создать подписку на атрибуты существующей сущности в OrionCB.

URL-адрес http://130.206.80.120:1026/NGSI10/subscribeContext

Метод POST

Заголовки Content-Type: application / 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. Это предполагает, что эта подписка существует.

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

Пожалуйста, что-то не так?

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

С Уважением


person user2677744    schedule 26.01.2015    source источник
comment
Измените свой вопрос, чтобы отобразить командную строку, запускающую Orion Context Broker, обычно это результат выполнения команды ps ax | grep contextBroker.   -  person fgalan    schedule 26.01.2015
comment
[root @ orioncb ~] # ps ax | grep contextBroker 6889 точек / 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   -  person user2677744    schedule 27.01.2015


Ответы (1)


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

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

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

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

echo 'db.csubs.findOne({_id: ObjectId("54c90821286043500575eecf")})' | mongo orion
person fgalan    schedule 28.01.2015