2

OrionCB で既存のエンティティの属性のサブスクリプションを作成しようとしています。

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

メソッド POST

ヘッダーのコンテンツ タイプ: 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 コードが返されます。このサブスクリプションが存在することを示しています。

サブスクリプションが存在し (作成と削除が正常に行われているため)、サブスクリプションを一覧表示するときに表示されないという事実はまれです。

何か問題がありますか?

私はこの whit cygnus プロセスを開始しようとしていますが、cygnus と同じプロセスを停止して、同じ結果を得ています。

よろしく

4

1 に答える 1

0

Mongofind()コマンドは、クエリに一致する最初の 20 件の結果を返します。したがって、それより多くのサブスクリプションがある場合 (たとえば 30 件以上)、検索している特定のサブスクリプションが取得されないことがあります。(mongo インタラクティブ シェルでは、itコマンドを使用して 20 個の結果の次のバッチを取得できますが、mongo が非インタラクティブ モードで実行されている場合にこれがどのように機能するかはわかりません)。

したがって、検索する ID をクエリに含めることをお勧めします。たとえば、Orion リクエストで取得した ID が「54c90821286043500575eecf」の場合、次を使用できます。

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

さらに、1 つの結果しか期待していないfindOne()ため、 の使用法を使用して保存できますpretty()。つまり、次のようになります。

echo 'db.csubs.findOne({_id: ObjectId("54c90821286043500575eecf")})' | mongo orion
于 2015-01-28T16:11:41.047 に答える