Class PipelineContextExample

java.lang.Object
com.streamconverter.examples.PipelineContextExample

public class PipelineContextExample extends Object
例3: PipelineContext によるスレッド間の値共有と MDC 伝搬

StreamConverter では各コマンドが別の仮想スレッドで並列実行される。 スレッドをまたいで値を共有するための仕組みが PipelineContext である。

この例で学べること:

  • 複数コマンドは別スレッドで動くため、通常の変数で値を渡すことができない
  • PipelineContext.putShared(String, String) でパイプライン内の全コマンドが参照できる値を登録できる
  • MdcPropagatingRule は抽出した値を PipelineContext 経由で MDC に自動反映する
  • 後段コマンドのログにも前段で抽出した値が自動的に含まれる(TurboFilter による同期)

パイプライン構成(3段):

 [コマンド1: ラムダ]
   最初の1行から注文IDを読み取り PipelineContext.putShared("orderId", ...) に格納
          ↓
 [コマンド2: CsvNavigateCommand + MdcPropagatingRule]
   productName 列を抽出し、値を "productName" キーで MDC に自動伝搬
   → このコマンドのログに orderId と productName が含まれる
          ↓
 [コマンド3: CsvNavigateCommand + TrimRule]
   address 列の前後空白をトリム
   → このコマンドのログにも orderId が含まれる(PipelineContext 経由)