Class MdcSetupRule

java.lang.Object
com.streamconverter.command.rule.MdcSetupRule
All Implemented Interfaces:
IRule

public class MdcSetupRule extends Object implements IRule
MDC設定用のルール

XMLやJSONなどから抽出した値を、ExecutionContextの共有コンテキストに設定します。 共有コンテキストに設定された値は、全ての並列実行中のコマンドから即座にアクセス可能になり、 applyToMDC()呼び出し時にMDCに反映されます。

使用例:


 // ExecutionContextを作成
 ExecutionContext context = ExecutionContext.create();

 // MdcSetupRuleを使用してXMLからuserIdを抽出してMDCに設定
 IStreamCommand xmlNavigate = new XmlNavigateCommand(
     TreePath.of("request", "userId"),
     new MdcSetupRule(context, "userId")
 );

 // パイプライン実行
 StreamConverter.createWithContext(context, xmlNavigate, otherCommands...)
     .run(inputStream, outputStream);

 // 全てのコマンドのログに [userId:USER12345] が出力される
 

スレッドセーフ性: このルールはスレッドセーフです。複数のスレッドから同時に呼び出されても、 ExecutionContextの共有コンテキスト(ConcurrentHashMap)により安全に動作します。

  • Constructor Details

    • MdcSetupRule

      public MdcSetupRule(ExecutionContext context, String mdcKey)
      MdcSetupRuleを作成します
      Parameters:
      context - ExecutionContextインスタンス
      mdcKey - MDCキー名(共有コンテキストのキーとして使用される)
      Throws:
      NullPointerException - contextまたはmdcKeyがnullの場合
  • Method Details

    • apply

      public String apply(String extractedValue)
      抽出された値を共有コンテキストに設定します

      このメソッドは値を変更せずそのまま返しますが、副作用として ExecutionContextの共有コンテキストに値を設定します。 MDCへの同期はLogback TurboFilterが自動的に行うため、呼び出し側は同期を意識する必要がありません。

      Specified by:
      apply in interface IRule
      Parameters:
      extractedValue - 抽出された値(nullの場合は共有コンテキストから削除)
      Returns:
      入力値をそのまま返す
    • getMdcKey

      public String getMdcKey()
      このルールが使用するMDCキー名を取得します
      Returns:
      MDCキー名
    • toString

      public String toString()
      Overrides:
      toString in class Object