{ "version": "1.1", "id": "messaging-spring-boot-starter-c01", "title": "등록과 조립의 분리", "question": "등록된 브로커와 오늘 조립할 수 있는 브로커는 어떻게 갈리는가?", "type": "dependency", "direction": "LR", "audience": [ "메시징 플랫폼을 읽는 사람" ], "summary": "레지스트리에 등록된 것과 오늘 조립할 수 있는 것이 다르고 그 차이를 선택 단계에서 거부로 알린다.", "alt": "MessagingProviderSelection 에서 kafka 로는 조립 가능 화살표가, rabbit 으로는 등록만 화살표가 가고 rabbit 에서 선택 단계 거부로 이어진다.", "long_description": "SSOT §6.2 는 BROKERS_WITHOUT_A_TRANSPORT 맵이 rabbit 을 담고 있고 RabbitChannelPublisher 의 구현이 어디에도 없으며 RabbitMessagingAutoConfiguration 에 MessagingTransport bean 이 없다고 적는다. KafkaMessagingAutoConfiguration 에는 있다. javadoc 이 \"Registered is not the same as assemblable\" 로 그 구분을 명시하므로 이것은 결함이 아니라 fail-closed 설계다.", "source_context": { "document": "docs/clean-architecture-backend-template/final/document.md", "document_sha256": "8071fe71b3359d9cf60b95909c26c7b50653ce2f22bbc5fcf6988719bb91236d", "anchor": { "kind": "line", "value": 22171, "line": 22171 } }, "composition": { "profile": "component-flow", "diagram_only": true, "reference_ids": [ "payment-event-flow" ], "rationale": "선택 지점에서 두 브로커가 갈리고 한쪽이 거부로 끝나는 방향이 논지다.", "focus_node": "selection" }, "groups": [], "nodes": [ { "id": "selection", "label": "MessagingProviderSelection", "kind": "service", "role": "source", "evidence": [ { "start_line": 22171, "end_line": 22178 } ], "assumption": false, "emphasis": "primary" }, { "id": "kafka", "label": "kafka 전송", "kind": "service", "role": "sink", "evidence": [ { "start_line": 22186, "end_line": 22186 } ], "assumption": false }, { "id": "rabbit", "label": "rabbit 등록", "kind": "service", "role": "service", "evidence": [ { "start_line": 22171, "end_line": 22178 } ], "assumption": false }, { "id": "reject", "label": "선택 단계 거부", "kind": "service", "role": "sink", "evidence": [ { "start_line": 22171, "end_line": 22178 } ], "assumption": false } ], "edges": [ { "id": "k", "from": "selection", "to": "kafka", "label": "조립 가능", "kind": "request", "evidence": [ { "start_line": 22186, "end_line": 22186 } ], "assumption": false }, { "id": "r", "from": "selection", "to": "rabbit", "label": "등록만", "kind": "request", "evidence": [ { "start_line": 22171, "end_line": 22178 } ], "assumption": false }, { "id": "x", "from": "rabbit", "to": "reject", "label": "거부", "kind": "request", "evidence": [ { "start_line": 22171, "end_line": 22178 } ], "assumption": false, "emphasis": "primary" } ], "legend": [], "metadata": {} }