7.1 KiB
title, source_type, url, archive_url, related_branches, related_projects, tags, created
| title | source_type | url | archive_url | related_branches | related_projects | tags | created | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Spring Framework Observability — ContextPropagatingTaskDecorator 공식 참조 | official-doc | https://docs.spring.io/spring-framework/reference/integration/observability.html |
|
|
|
2026-06-11 |
Spring Framework Observability — ContextPropagatingTaskDecorator 공식 참조
Layer:
raw/official-docs/— Spring Framework 공식 레퍼런스 문서의 원문 발췌·출처 기록. 검증된 요약은/ingest후wiki/concepts/에source-summary-template형식으로 별도 작성.
Parent / 활용 branch
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-background-job-async-contract | D5/D6 — TaskDecorator(ContextPropagatingTaskDecorator)를 setTaskDecorator() 로 등록하는 것이 Spring 공식 권고 패턴이며 Observation context + MDC 가 그 경로로 worker thread 에 전파됨 (span_id explicit MDC copy 불필요 근거) |
출처 / Source
- 원본 URL: https://docs.spring.io/spring-framework/reference/integration/observability.html
- 아카이브 URL: (미제공)
- 저자 / 조직: Spring Framework (VMware / Broadcom)
- 발행일: (공식 ref — 버전 지속 갱신)
- 마지막 확인일: 2026-06-11
왜 저장했는지 / Why archived
feature-background-job-async-contract 의 D5/D6 결정(TaskDecorator 1개로 MDC + Observation context 전파)이 UNSUPPORTED_DECISION 으로 표시된 상태를 해소하기 위해 보관. Spring 공식 문서가 ContextPropagatingTaskDecorator + setTaskDecorator() 패턴을 async context propagation 의 공식 메커니즘으로 기술하며 MDC 전파와 io.micrometer:context-propagation 의존성을 명시한다.
핵심 인용 / Key quotes (verbatim, 4개)
[§Global Event Multicaster Configuration / Key Requirements] "The
io.micrometer:context-propagationlibrary must be present on the classpath"
[§Global Event Multicaster Configuration / Key Requirements] "Use
setTaskDecorator()to apply theContextPropagatingTaskDecorator"
[§Per-Listener Async Configuration / code comment line 88] "// this logging statement will contain the expected MDC entries from the propagated context"
[§Key Takeaways] "MDC entries from propagated context are available in logging statements"
Claims Extracted / 추출된 주장
이 자료가 직접 말하는 것만 claim 으로 분리한다.
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| SF-OBS-C1 | ContextPropagatingTaskDecorator 를 setTaskDecorator() 로 TaskExecutor 에 등록하는 것이 Spring 이 권고하는 async context propagation 패턴이다 |
[§Key Requirements] "Use setTaskDecorator() to apply the ContextPropagatingTaskDecorator" |
official-vendor-doc |
Spring Framework + Micrometer Context Propagation 를 사용하는 모든 @Async / event listener async 실행 컨텍스트 |
이 패턴이 ThreadPoolTaskExecutor(ca-tmpl 사용 클래스) 에서도 동일하게 동작한다는 것은 이 페이지에서 직접 증명하지 않음 — 페이지 예시는 SimpleAsyncTaskExecutor 사용 |
| SF-OBS-C2 | async task 실행 시 logging 문 안에서 propagated context 의 MDC 항목이 자동으로 포함된다 | [§code comment] "// this logging statement will contain the expected MDC entries from the propagated context"; [§Benefits] "MDC entries from propagated context are available in logging statements" | official-vendor-doc |
ContextPropagatingTaskDecorator 가 설정된 executor 를 통해 실행되는 async task |
MDC 에 복사되는 구체적인 키 목록(request_id, trace_id 등)을 이 페이지가 직접 명시하지 않음 |
| SF-OBS-C3 | io.micrometer:context-propagation 라이브러리가 classpath 에 존재해야 context propagation 이 동작한다 |
[§Key Requirements] "The io.micrometer:context-propagation library must be present on the classpath" |
official-vendor-doc |
Spring Framework observability context propagation 전반 | 어느 Spring Boot 버전부터 auto-configured 되는지 이 페이지가 명시하지 않음 |
| SF-OBS-C4 | ContextPropagatingTaskDecorator 는 thread boundary 를 가로질러 observability context 를 전파하는 메커니즘이다 |
[§Key Takeaways] "ContextPropagatingTaskDecorator is the mechanism for propagating observability context across thread boundaries" | official-vendor-doc |
Micrometer Observation context + MDC propagation across threads | span_id 의 explicit MDC copy 가 불필요하다는 것을 이 페이지가 직접 언급하지는 않음 — span_id 는 Observation context 에서 자동 파생된다는 주장은 Micrometer 문서에서 추가 확인 필요 |
Usage Boundaries / 적용 경계
- 이 자료가 직접 증명하는 것:
SF-OBS-C1: Spring 공식 권고 패턴이setTaskDecorator(new ContextPropagatingTaskDecorator())임SF-OBS-C2: 이 패턴으로 async task 내 logging 에서 MDC entries 가 자동 포함됨SF-OBS-C3:io.micrometer:context-propagation의 classpath 의존성이 필수임SF-OBS-C4:ContextPropagatingTaskDecorator가 thread boundary 를 가로지르는 observability context propagation 의 공식 메커니즘임
- 이 자료가 증명하지 않는 것:
- 예시 코드가
SimpleAsyncTaskExecutor를 사용하므로ThreadPoolTaskExecutor에서의 동일 동작을 이 페이지만으로 보장할 수 없음 (실제로는 동일 인터페이스이나 별도 검증 권고) - span_id 의 explicit MDC copy 가 불필요하다는 직접 선언 없음 — Micrometer 문서에서 Observation → MDC span_id 자동 전파 별도 확인 필요
- 전파되는 MDC 키 목록(request_id / trace_id / correlation_id / tenant_id)을 이 페이지가 열거하지 않음
- 예시 코드가
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- ca-tmpl 의
ThreadPoolTaskExecutorbean 에서setTaskDecorator(new ContextPropagatingTaskDecorator())호출 후 contract test 로 실제 MDC 전파 검증 io.micrometer:context-propagation가 ca-tmpl 의 spring-boot 버전에서 자동 포함되는지 또는 명시적 의존성 추가 필요 여부
- ca-tmpl 의
메모 / Notes
- 이 페이지는
@EventListener+@Async패턴에 초점을 맞추나,setTaskDecorator()API 는TaskExecutorConfigurer/ThreadPoolTaskExecutor에도 동일하게 적용 가능함 (인터페이스 레벨 — 추론, 미검증) SF-OBS-C4는 D5 의 "TaskDecorator 1개로 Observation context 전파" 를 뒷받침하나 D6 의 "span_id MDC explicit copy 불필요" 주장은 Micrometer 공식 문서 추가 인용 필요- 추가로 봐야 할 동일 출처 관련 페이지:
https://docs.micrometer.io/context-propagation/reference/(context-propagation 라이브러리 레퍼런스)
Related / 관련
- 같은 주제 다른 official-doc / company-tech-blog: (미작성 — Micrometer context-propagation 공식 레퍼런스 추가 권고)
- 이 자료를 인용한 wiki 요약: (생성 시 추가)