イントロダクション

Cepheus-broker コンポーネントは、2種類のオペレーションをサポートする軽量ブローカです :

  • どのコンポーネントがコンテキスト・エンティティを登録しているかを追跡することによって転送をリクエストする
  • コンテキスト・エンティティに対する pub/sub リクエスト

これにより、実装は、NGSI ゲートウェイによって処理されるユースケースに対して、シンプルで十分なものになります。

Cepheus-Broker の主な目的は、IoT Agents や NGSI デバイス(アクチュエータとセンサ)のような "サウス・コンポーネント"の間に位置して、リモート・ブローカ(Orion のような"ノース・コンポーネント")にリクエストを転送し、 NGSI コンポーネント(Cepheus-CEPなど)は、更新されたコンテキスト要素の一部をサブスクライブします。

broker

転送サポート (Forwarding support)

リクエスト転送は、サウス・コンポーネント(IoT Agents や NGSI デバイスなど)が起動時にコンテキスト・エンティティを登録するという事実に基づいています。

Broker は、リモート・ブローカに /registerContext リクエスト(すべての providingApplication URLsのリストを保持します) を転送する前にこれらのリクエストをトラックします。

そして、/updateContext または /queryContext リクエストが到着したとき、それらは次のようになります : - 一致する providingApplication URLが見つかったときに、サウス・コンポーネントに転送されます - それ以外はリモート・ブローカに転送されます

broker forward

転送プロセスは、Fiware-Orion プロジェクトのドキュメントで説明されています。

リモート・ブローカへの updateContext の転送を無効にする

いくつかの複雑なシナリオでは、プライバシ、待ち時間、またはセキュリティ上の理由からリモート・ブローカからのセンサのような "サウス・コンポーネント "によって発行されたコンテキスト・エンティティの更新を隠すことが有用な場合があります。

remote.forward.updateContextfalse に設定すると、リモート・ブローカへの updateContext リクエストの転送を無効にすることができます。詳細については、管理ガイドを参照してください。

Pubsub サポート

パブリッシュ/サブスクライブは、 /notifyContext リクエストをトリガーするコンテキスト・エンティティへの /subscribeContext リクエストによってサポートされます。

この機能は主に、Cepheus-CEP がコンテキスト・エンティティの更新を追跡するために使用します。

broker notify

サブスクリプションは Sqlite データベースに保持されます。

制限事項

Broker は、完全なブローカの実装と比較して、シンプルな設計のために多くの制限があります。

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