ファイルを使用する Message Routing サンプルの拡張

Message Routing サンプルの ESQL にわずかな変更を加えるだけで、他のメッセージ・フローでも使用できるようになります。

キャッシュのリフレッシュ基準の変更

リフレッシュ・メッセージが ROUTING.REFRESH キューに送信されるとキャッシュが現在リフレッシュされる。

キャッシュのリフレッシュのタイミングを決定する際、以下のような他の基準も使用できます。

基準を変更するには、ESQL で以下のロケーションを編集します。

IF CacheFile.valid IS NOT NULL THEN

60 秒の期間を使用するようにリフレッシュ基準を変更するには、以下を行います。

  1. ESQL の赤丸で囲まれた基準を、次のように変更します。
    IF CacheFile.LastUpDate is not null and (CURRENT_TIMESTAMP - 
        CacheFile.LastUpDate) second < INTERVAL '60' SECOND THEN
  2. さらに、
    IF CacheFile.Valid is not null THEN
    の 2 番目のインスタンスを直前のステップのインスタンスと同じものに変更します。
  3. 次の部分を、
    SET CacheFile.valid = true;
    
    このように変更します。
    SET CacheFile.LastUpDate = CURRENT_TIMESTAMP;
    

伝搬レコード式の代わりにレコードのオフセットを使用する方法

現在、このサンプルでは、レコード選択式を設定することにより、伝搬するレコードを選択しています。 場合によっては、メッセージが送られるたびに、ファイル中の次のレコードを取り出すほうがよいことがあります。 このアクションを実行するために、オフセットを設定することができます。

オフセット・プロパティー

以下の方法でオフセット・プロパティーを使用できます。

  1. メッセージ・フロー Routing_using_records_file で、2 つの Compute ノードをそれぞれ FileRead ノードの前と後に追加します。
  2. ESQL の中に共有変数を 1 つ作成します。
    declare cache SHARED ROW;
  3. 最初の Compute ノードの ESQL に、以下のコードを追加します。
    SET OutputLocalEnvironment = InputLocalEnvironment;
                    IF (cache.file.offset > 0) THEN
              SET OutputLocalEnvironment.Destination.File.Offset = cache.file.offset;
              ELSE
              SET OutputLocalEnvironment.Destination.File.Offset = 0;
              END IF;
                    
    「計算モード」プロパティーを「LocalEnvironment」に設定します。
  4. 2 番目の Compute ノードの ESQL に、以下のコードを追加します。
    SET OutputLocalEnvironment = InputLocalEnvironment;
    SET cache.file.offset = OutputLocalEnvironment.File.Read.NextRecordOffset;
    「計算モード」プロパティーを「LocalEnvironment」に設定します。
  5. FileRead ノードで、「レコード選択式」プロパティーを true() に設定します。
  6. メッセージ・フローを駆動するには、File_Records_file_message1.mbtest を使用して、「エンキュー」を複数回クリックします。 これにより、各レコードが順に読み取られます。

キューではなくラベルに至る経路を使用する方法

このサンプルは、メッセージを特定のキューに経路指定する方法を示すものです。 別の使用方法として、ラベルへのルーティングが考えられます。 これを実装するには、以下の手順に従います。

  1. FileRead ノードのメッセージ・フロー Routing_using_records_file で、「出力データのロケーション」プロパティーを $OutputLocalEnvironment/Destination/RouterList/DestinationData/labelName に変更します。
  2. 「結果データのロケーション」プロパティーを、$ResultRoot/MRM/data/labelName に変更します。 「メッセージ・セット」プロパティーを、queueName から labelName に変更します。
  3. RouteToLabel ノードを FileRead ノードの後に追加し、MQOutput ノードを削除します。
  4. いくつかの Label ノードを追加します。
  5. fileRead.csv を更新し、キュー名をラベル名に変更します。
  6. 各 Label ノードの「ラベル名」プロパティーを、fileRead.csv で設定したラベルの名前に設定します。
  7. 各 Label ノードの後に MQOutput ノードを追加し、キュー名を指定します。

MQOutput ノードは、別の種類の出力ノードに置き換えることができます。 例えば、RouteToLabel ノードを用いてフローを使用します。

ラベルに至る経路

サンプルのホームに戻る