feat: add messaging R2 polling producer
This commit is contained in:
@@ -223,6 +223,23 @@ curl -X POST localhost:8080/work-logs -H 'Content-Type: application/json' -d '{
|
||||
이벤트의 클래스 단순명을 쓰는 대안도 있지만, 클래스 이름을 바꾸면 토픽이 조용히 바뀌어 컨슈머가
|
||||
깨질 수 있어, 안정적인 문자열 리터럴을 택했습니다(토픽 마이그레이션 계획 없이는 바꾸지 말 것).
|
||||
|
||||
### WorkLogReservedPayload / …ContractContribution — canonical contract fixture
|
||||
|
||||
- `WorkLogReservedPayload`는 새 closed contract SPI에 제공하는 exact final record다. v1은
|
||||
`workLogId` 하나만 소유하며, schema와 같은 canonical bounded identifier 규칙을 생성자에서 지킨다.
|
||||
- `contracts/messaging/portfolio.worklog.reserved/v1.schema.json`과 golden vector는
|
||||
**sample fixture contract**다. 공통 envelope는 WorkLog 필드를 알지 못하며 이 모듈을 삭제해도
|
||||
production module build/runtime은 깨지지 않아야 한다.
|
||||
- contribution은 contract ID, exact payload type/component order, classpath resource ID, checked-in
|
||||
digest와 provider-neutral descriptor만 제공한다. JSON mapper, physical topic, Kafka 설정을 소유하지
|
||||
않으며 매 호출 filesystem I/O도 하지 않는다.
|
||||
- 기존 3-field `WorkLogReservedIntegrationEvent`/hand-rolled mapper는 현재 legacy outbox
|
||||
characterization 경로에 남아 있다. 새 1-field canonical payload는 그 타입을 조용히 대체하지 않으며,
|
||||
closed catalog와 encoder가 조립되기 전까지 양쪽은 서로 호출하거나 직렬화하지 않는다.
|
||||
- 현재는 classpath scanning이나 runtime discovery가 없다. Task 5의 closed catalog 조립 전에는
|
||||
자동 등록되지 않고, Task 6 validator qualification 전에는 Draft 2020-12 validator compatibility를
|
||||
주장하지 않는다.
|
||||
|
||||
### RepoStatsPort
|
||||
- 외부 저장소 통계를 가져오는 아웃바운드 포트(구현은 adapter-outbound).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user