안녕하세요 섹션2. 12번 강의에서 질문 있습니다.
안녕하세요 강의 잘 듣고 있습니다.
섹션2 12번 강의에서 (관심사기반의뉴스레터발행/구독모델) 에서 질문 있습니다.
fanout exchange는 바인딩된 모든 큐에 메시지를 보내는 방식이므로 모든 큐에 메시지가 가는 것으로 알고 있습니다.
예를 들어 제가 java 라는 특정 topic을 구독하면 java queue 에 있는 메시지만 계속 소비할텐데,
그러면 나머지 spring queue나 vue queue 에는 메시지가 계속 쌓여 문제가 되는 것 아닌가요 ?
발행/구독 모델을 왜 fanout exchange로 구현하신 건지 궁금합니다.
回答 2
1
수강자님 안녕하세요.
특정한 뉴스를 발행하는 경우 데이터가 쌓이는게 우려될 경우 Direct로 설계하는게 맞고, 회원 등급별로 후처리 등을 염두에 둘 경우 팬아웃으로 써도 무방하빈다.
pub/sub을 이용한 알람이 주 예제이고, 뉴스구독의 경우 fanout이든, direct이든 topic이든 구현하는 목적에 부합하는 방식으로 선택하시면 되는 문제라서 예제에서 단계별로 흐름을 설명하면서 각 exchange의 특징을 보여들릴 목적이지 뭘 선택하느냐는 실제 개발 환경에서의 목적에 따라 취사선택하시면 됩니다.
발행/구독 모델에 특정 사용자만 매칭해서 쏴야 할 경우, 전체에게 다 발행할 경우, 관심사 별로 유연하게 할 경우 해당 업무는 설계하는 목적에 따라 각각 direct, fanout, topic 을 선택해서 진행하시면 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김태우님.
Fanout Exchange와 관련된 궁금증에 대해 설명 드리겠습니다.
Fanout Exchange의 특성: Fanout Exchange는 메시지를 라우팅 키와 관계없이 바인딩된 모든 큐로 브로드캐스트 하는 기능을 가지고 있습니다. 모든 구독자에게 메시지를 전송해야 하는 경우 효율적입니다.
발행/구독 모델에서의 Fanout 사용 이유:
- 발행/구독 모델에서는 일반적으로 여러 구독자에게 같은 메시지를 전달하려고 할 때 Fanout Exchange를 사용합니다. 예를 들어 뉴스 레터 시스템처럼 모든 사용자가 동일한 정보에 접근해야 할 때 유용합니다.
- Fanout Exchange를 사용하면 ~모든 바인딩된 큐에 같은 메시지가 전송~되므로, 구독자가 여러 큐에 할당되어 있는 경우에도 동일한 메시지를 얻을 수 있습니다.
- 발행/구독 모델에서는 일반적으로 여러 구독자에게 같은 메시지를 전달하려고 할 때 Fanout Exchange를 사용합니다. 예를 들어 뉴스 레터 시스템처럼 모든 사용자가 동일한 정보에 접근해야 할 때 유용합니다.
큐에 메시지가 쌓이는 문제:
- 특정 Topic(예: “/topic/java”)을 구독하면 해당 큐에 있는 메시지들을 소비하지만 나머지 큐의 메시지가 쌓이는 것은 사실입니다.
- 이를 방지하기 위해 큐의 TTL(Time-To-Live)이나 정책을 설정하여 일정 시간이 지나면 메시지를 자동으로 삭제하도록 할 수 있습니다.
- 특정 Topic(예: “/topic/java”)을 구독하면 해당 큐에 있는 메시지들을 소비하지만 나머지 큐의 메시지가 쌓이는 것은 사실입니다.
Fanout Exchange를 사용한 발행/구독 모델은 메시지를 구독자에게 효율적으로 전달할 수 있는 구조이며, 큐 메시지 관리 문제는 별도의 해결 방법을 통해 관리할 수 있습니다.
이와 관련하여 더 자세한 방법을 알고 싶으시면 다음의 질문들을 통해 추가적인 답변을 받아보시기 바랍니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
16 강의 메세지 retryCount의 의도
0
23
2
step 4 - fanout 관련 질문
0
69
2
dlx dlq 설정 관련
0
65
1
동적 큐 이름 설정 방법 및 SimpleRabbitListenerContainerFactory의 재정의에 따른 Retry 설정 미적용 관련 질문입니다.
0
100
1
강의 자료 관련
0
85
2
인증 에러
0
83
2
RabbitMQ에서의 트랙잭션 메시징 질문
0
110
2
Producer/Consumer 단위
0
71
2
안녕하세요 "섹션2 8. Consumer간 작업 분배" 에서 질문 있습니다.
0
91
2
컨슈머 서버 질문드립니다
0
81
2
DLQ 관련 질문
0
131
2
알림은 왜 pub sub 구조로 설계하나요?
0
150
2
Receiver를 여러개 하려면 어떻게하나요?
0
141
2
깃허브 step11 브랜치
0
99
1
DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서
0
152
2
NotificationMessage가 필요한 이유 질문
0
110
2
스탭4 질문드립니다
0
155
3
생성자 질문드립니다
0
107
2
Pub/Sub & WebSocket 활용한 실시간 알림
0
216
2
채팅 방식 질문입니다!
0
140
2
강의와 살짝 무관하지만.. MQ에 대한 질문이 있습니다!
0
209
1
챕터18 retry yml 강의 부분 질문
0
190
2
tutorial-step4 질문
0
150
2
pub/sub, producer/consumer 차이
0
266
2

