--- kind: CONCEPT slug: messaging-kafka-c01 title: 소비자 런타임 — 스레드 규율이 설계다 topic: delivery-and-settlement-models project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: concept:messaging-kafka-c01 evidenceCapturedOn: 2026-09-01 assets: - key: messaging-kafka-c01 file: ../../../final/evidence/rendered/messaging-kafka-c01.svg - key: messaging-kafka-c01-diagram file: ../../../final/assets/diagrams/messaging-kafka-c01.svg evidence: - ../../../final/evidence/raw/messaging-kafka-c01.txt source: - 원본 분석 절은 analysis/messaging/messaging-kafka.md#L69 이다. module: messaging-kafka --- # 소비자 런타임 — 스레드 규율이 설계다 공개 API 인 pause/resume 도 제어 큐를 통해 폴 스레드로 넘어가고, 반환된 단계는 다음 폴 주기 에 완료된다. close() 만 예외이고 그 예외에 근거가 붙어 있다 — 이후 폴 루프가 멈추므로 큐에 넣으면 영원히 배수되지 않는다. ## 본문 공개 API 인 `pause`/`resume` 도 제어 큐를 통해 폴 스레드로 넘어가고, 반환된 단계는 **다음 폴 주기** 에 완료된다. ## 폴 스레드가 소유한 것 :::evidence key="messaging-kafka-c01-diagram" alt="consumer 객체와 제어 큐 배수가 폴 스레드 안에 놓이고 작업자 람다가 바깥에 빗금으로 놓인다" caption="폴 스레드가 소유한 것" zoom="false" ::: ## close 만 예외인 이유 이후 폴 루프가 멈추므로 큐에 넣으면 영원히 배수되지 않는다. ## 이 기록이 다루는 범위 :::evidence key="messaging-kafka-c01" alt="코드베이스에서 파일 목록을 만든 출력 25줄. 이 기록이 다루는 범위가 그 목록이다." caption="코드베이스 파일 목록 — 25줄 · exit 0" zoom="true" ::: ## 규율이 실제로 지켜진다 작업자 람다가 만지는 것은 `settlements`·`coordinator`·`shutdown`·`retries` 뿐이고 `consumer` 는 한 번도 없다. 통독으로 확인했다.