Package com.streamconverter.examples
Class PipelineContextExample
java.lang.Object
com.streamconverter.examples.PipelineContextExample
例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 経由)
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
PipelineContextExample
public PipelineContextExample()
-
-
Method Details
-
main
- Parameters:
args- コマンドライン引数(未使用)- Throws:
IOException- I/O エラー
-