ListenHTTP(NGSIRestHandler)

コンテンツ:

機能性

NGSI イベントを NGSIEvent オブジェクトにマッピング

このセクションでは、ListenHTTP のおかげで、通知された NGSI イベント (ヘッダとペイロードを含む http メッセージ) が、Draco プロセッサのいずれかに よって消費されるのに適した NGSIEvent オブジェクトを作成するために どのように使われるかを説明します。

このハンドラは、Apache NiFi のネイティブ・プロセッサである ListenHTTP によって使用されるように設計されていることに再び注意する必要があります。 NGSI ライクの通知を含む http メッセージは ListenHTTP によって受信され、 シンクのチャンネルに置かれる1つ以上のNGSIEvent オブジェクト (通知されたコンテキスト要素毎に1つ) を作成するために NGSIRestHandler に渡されます。これらのチャネルはメモリ内のオブジェクトですが、 ファイルの場合もあります。

一方では、NGSI ライクの通知を含む http メッセージは、一連の http ヘッダ とペイロードから構成されます。 一方、NGSIEvent オブジェクトは一連の ヘッダと、通知内のすでに解析されたバージョンのコンテキスト要素を含む ContextElement 型のオブジェクトで構成されています。通知されたボディの この解析済みバージョンは、インターセプターやシンクなど、 エージェント・アーキテクチャ内の他のコンポーネントによって消費される 準備ができているため、解析は1回だけ行われます。

ご覧のように、http メッセージと NGSIEvent オブジェクトの間には、 準ダイレクト変換 (quasi-direct translation) があります。

http メッセージ NGSIEvent オブジェクト
Fiware-Service ヘッダ fiware-service ヘッダ
Fiware-ServicePath ヘッダ fiware-servicepath ヘッダ
Fiware-Correlator ヘッダ fiware-correlator ヘッダ。このヘッダが送信されない場合、fiware-correlator は transaction-id ヘッダと同じです
transaction-id ヘッダ (内部追加)
他のヘッダ 廃棄
ペイロード ContextElement ペイロードの解析済みバージョンを含むオブジェクト

通知があれば、すべての FIWARE ヘッダが NGSIEvent オブジェクトに追加されます。 そうでなければ、デフォルト値 (それぞれ default_servicedefault_service_path の設定値をとる fiware-servicefiware-servicepath の場合です。設定のセクションを見てください)が使用されるか、自動生成 (これは fiware-correlator の場合で、その値は transaction-id と同じです)されます。

すでに紹介したように、fiware-correlator に加えて、完全な Draco のトランザクションを内部的に識別するために、すなわちコンテキスト・データが 通知されたときにソースから始まりシンクで終わるために transaction-id が作成されます。データは最終的に永続化されます。Fiware-Correlator ヘッダが通知されない場合、fiware-correlatortransactionid は同じ自動生成された値を取得します。

最後に、NGSIEVentContextElement 型の別のフィールドも含んでいます。 NGSINameMappingsInterceptor は、このハンドラによって追加されたオリジナルの コンテキスト要素のマップされたバージョンを追加します。

トップ

受信した通知に関する次のインターセプトされないイベントを想定しましょう (以下のコードは オブジェクト表現 であり、実際のデータ形式ではありません)

notification={
   headers={
       fiware-service=hotel1,
       fiware-servicepath=/other,/suites,
       correlation-id=1234567890-0000-1234567890
   },
   body={
      {
          entityId=suite.12,
          entityType=room,
          attributes=[
             ...
          ]
       },
       {
          entityId=other.9,
          entityType=room,
          attributes=[
             ...
          ]
       }
    }
}

ご覧のように、同じ FIWARE サービス (hotel) 内あるが、異なるサービス・パス 内の同じタイプ (room) の2つエンティティ (suite.12 and other.9) に 通知されます。NGSIRestHandler は2つのNGSIEvent を作成します :

ngsi-event-1={
   headers={
       fiware-service=hotel,
       fiware-servicepath=/suites,
       transaction-id=1234567890-0000-1234567890,
       correlation-id=1234567890-0000-1234567890,
       timestamp=1234567890,
       mapped-fiware-service=hotel
       mapped-fiware-service-path=/suites
    },
   original-context-element={
       entityId=suite.12,
       entityType=room,
       attributes=[
          ...
       ]
    }
}

ngsi-event-2={
   headers={
       fiware-service=hotel,
       fiware-servicepath=/other,
       transaction-id=1234567890-0000-1234567890,
       correlation-id=1234567890-0000-1234567890,
       timestamp=1234567890,
       mapped-fiware-service=hotel
       mapped-fiware-service-path=/other
   },
   original-context-element={
       entityId=other.9,
       entityType=room,
       attributes=[
          ...
       ]
    }
}

トップ

管理ガイド

設定

ListenHTTP は、次のパラメータで設定されます :

名前 デフォルト値 許容値 説明
Base Path contentListener 着信接続サポート (incoming connectionsSupports) のベース・パス。これは Orion 式言語で作成されたサブスクリプションの通知属性と一致する必要があります。true(変数レジストリのみを使用して評価されます)
Listening Port no 着信接続サポート (incoming connectionsSupports) をリッスンするポート、サブスクリプションに含める必要があります、式言語 : true (変数レジストリのみを使用して評価されます)
Max Data to Receive per Second 1秒間に受信するデータの最大量。これにより、帯域幅を指定されたデータ・レートに制限することができます。指定しない場合、データ・レートは調整されません
SSL Context Service Controller Service API: RestrictedSSLContextServiceImplementation: StandardRestrictedSSLContextService SSL コンテキストを取得するために使用するコントローラ・サービス
Authorized DN Pattern .* 着信接続の識別名に対して適用する正規表現。パターンが DN と一致しない場合、接続は拒否されます
Max Unconfirmed Flowfile Time 60 secs フローファイルががキャッシュから削除されるまでに確認されるのを待つ最大時間
HTTP Headers to receive as Attributes (Regex) no フローファイル属性として渡す必要がある HTTP ヘッダの名前を決定する正規表現を指定します。少なくともFiware-service, Fiware-Service-Path およびオプションで X-Auth-Token を含める必要があります
Return Code 200 HTTP コールのたびに返される HTTP リターン・コード

設定例は次のようになります :

listen-processor

トップ