イントロダクション¶
Cepheus-broker コンポーネントは、2種類のオペレーションをサポートする軽量ブローカです :
- どのコンポーネントがコンテキスト・エンティティを登録しているかを追跡することによって転送をリクエストする
- コンテキスト・エンティティに対する pub/sub リクエスト
これにより、実装は、NGSI ゲートウェイによって処理されるユースケースに対して、シンプルで十分なものになります。
Cepheus-Broker の主な目的は、IoT Agents や NGSI デバイス(アクチュエータとセンサ)のような "サウス・コンポーネント"の間に位置して、リモート・ブローカ(Orion のような"ノース・コンポーネント")にリクエストを転送し、 NGSI コンポーネント(Cepheus-CEPなど)は、更新されたコンテキスト要素の一部をサブスクライブします。

転送サポート (Forwarding support)¶
リクエスト転送は、サウス・コンポーネント(IoT Agents や NGSI デバイスなど)が起動時にコンテキスト・エンティティを登録するという事実に基づいています。
Broker は、リモート・ブローカに /registerContext リクエスト(すべての providingApplication URLsのリストを保持します) を転送する前にこれらのリクエストをトラックします。
そして、/updateContext または /queryContext リクエストが到着したとき、それらは次のようになります :
- 一致する providingApplication URLが見つかったときに、サウス・コンポーネントに転送されます
- それ以外はリモート・ブローカに転送されます

転送プロセスは、Fiware-Orion プロジェクトのドキュメントで説明されています。
リモート・ブローカへの updateContext の転送を無効にする¶
いくつかの複雑なシナリオでは、プライバシ、待ち時間、またはセキュリティ上の理由からリモート・ブローカからのセンサのような "サウス・コンポーネント "によって発行されたコンテキスト・エンティティの更新を隠すことが有用な場合があります。
remote.forward.updateContext を false に設定すると、リモート・ブローカへの updateContext リクエストの転送を無効にすることができます。詳細については、管理ガイドを参照してください。
Pubsub サポート¶
パブリッシュ/サブスクライブは、 /notifyContext リクエストをトリガーするコンテキスト・エンティティへの /subscribeContext リクエストによってサポートされます。
この機能は主に、Cepheus-CEP がコンテキスト・エンティティの更新を追跡するために使用します。

サブスクリプションは Sqlite データベースに保持されます。
制限事項¶
Broker は、完全なブローカの実装と比較して、シンプルな設計のために多くの制限があります。
- Broker は、
updateContextSubscriptionsオペレーションを除いて、NGSI v1 API のすべての NGSI-10 標準およびコンビニエンス・オペレーションをサポートしています - Broker は、リクエスト転送のためのNGSI v1 APIからのNGSI-9
registerContextオペレーションのみをサポートします - サブスクリプションは、
notifyConditionの通知のタイプとしてONCHANGEのみをサポートします - サブスクリプションは、
throttling,restriction,condValuesをサポートしません - サブスクリプションは、更新されたコンテキスト要素のセット全体をペイロード通知に送信します。フィルタリングはありません
- 複数 NGSI プロバイダが同じコンテキスト・エンティティを登録した場合は、最初のプロバイダのみが転送された
queryContextかupdateContextリクエストを取得ます queryContextまたはupdateContextリクエストが複数のコンテキスト・エンティティへの参照を含む場合、リクエストは最初のコンテキスト・エンティティのコンテキスト・プロバイダにのみ転送されます- Broker がコンテキスト・エンティティの値を保持しない場合、すべてのリクエストがコンテキスト・プロバイダまたはリモート・ブローカに転送されます