Class PipelineContext

java.lang.Object
com.streamconverter.context.PipelineContext

public final class PipelineContext extends Object
パイプライン内でコマンド間の共有値を管理するコンテキスト。

パイプライン実行中に、あるコマンドが抽出した値(例: XMLヘッダのorderId)を 他のコマンドのログ出力に自動反映するための仕組みを提供する。

共有値は PipelineContextTurboFilter により、 ログ出力直前にMDCへ自動的にマージされる。

使用例:


 // コマンド内でストリームデータから値を抽出してMDCに伝搬
 PipelineContext.putShared("orderId", extractedOrderId);

 // 他のコマンドのログ出力時に自動的にMDCに反映される
 

MDC 関連クラスの全体像:

  • MdcPropagatingRule — ストリームから抽出した値を このコンテキスト経由で MDC に伝搬する Rule 実装。コマンドから MDC へ値を書き込む際の推奨手段。
  • PipelineContextTurboFilter — ログ出力直前に syncToMDC() を呼び出し、共有値を MDC へ自動反映する Logback TurboFilter。
  • MDCInitializerInheritableMDCAdapter を インストールし、MDC コンテキストを子スレッドへ自動継承させる。アプリ起動時に一度呼ぶ。
  • Constructor Summary

    Constructors
    Constructor
    Description
    パイプラインコンテキストを新規作成する。
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    現在のスレッドからPipelineContextをクリアする。
    static String
    共有値を取得する。
    static void
    putShared(String key, String value)
    共有値を設定し、呼び出しスレッドのMDCにも即座に反映する。
    static void
    現在のスレッドにPipelineContextを設定する。
    static void
    全共有値を呼び出しスレッドのMDCにマージする。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • PipelineContext

      public PipelineContext()
      パイプラインコンテキストを新規作成する。
  • Method Details

    • putShared

      public static void putShared(String key, String value)
      共有値を設定し、呼び出しスレッドのMDCにも即座に反映する。

      PipelineContextが未設定のスレッドから呼ばれた場合は何もしない。

      Parameters:
      key - MDCキー名
      value - 値。nullの場合はキーを削除する
      Throws:
      IllegalArgumentException - keyがnullの場合
    • getShared

      public static String getShared(String key)
      共有値を取得する。
      Parameters:
      key - MDCキー名
      Returns:
      値。キーが存在しない場合またはPipelineContext未設定の場合はnull
    • syncToMDC

      public static void syncToMDC()
      全共有値を呼び出しスレッドのMDCにマージする。

      PipelineContextが未設定の場合は何もしない。

    • set

      public static void set(PipelineContext context)
      現在のスレッドにPipelineContextを設定する。

      StreamConverterがパイプラインの各コマンドスレッドで呼び出す。

      Parameters:
      context - 設定するPipelineContext
    • clear

      public static void clear()
      現在のスレッドからPipelineContextをクリアする。