inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Giải quyết kiến trúc không đồng bộ bằng RabbitMQ một cách nhanh chóng

11. Thông báo thời gian thực sử dụng mô hình Pub-Sub (sử dụng WebSocket, STOMP) phần 2

pub/sub, producer/consumer 차이

Đã giải quyết

261

hoonseung

34 câu hỏi đã được viết

0

안녕하세요

두 개념의 차이점이 궁금한데요

pub/sub 은 특정 topic으로 메세지를 발행하면 해당 topic을

구독중인 여러 구독자들에게 전달될 수 있고

producer/consumer는 메세지를 큐에 발행하면 큐에 저장된 메세지는 한명의 소비자에게만 전달 될 수 있는 건가요?

그러면 rabbitmq는 producer/consumer 이고

websocket은 pub/sub 인가요?

 

java spring-boot jpa msa websocket rabbitmq pub/sub

Câu trả lời 2

0

codevillain

안녕하세요.

두개의 차이점중 가장 큰 부분은 하나의 메시지를 하나의 컨슈머가 처리하느냐, 여러 컨슈머가 처리하느냐로 판단하시면 될거 같습니다.

Publish/Subscribe 패턴은 브로드캐스트 용도로 Fanout, Topic 익스체인지로 연결된 모든 큐에 메시지가 복제되서 전달이 되는것이고 Producer/Consumer 패턴은 하나의 큐를 하나의 컨슈머가(Direct) 처리 하는 방식입니다.

즉, 다수의 서비스가 동일한 메시지를 필요로 하면 pub/sub을, 하나의 메시지를 하나의 컨슈머가 처리하고 로드밸런싱을 통해 분배를 할 경우 producer/consumer 라고 보시면 되고 websocket은 프로토콜이나, 굳이 구조로 나누자면 pub/sub 방식이라고 보시면 되겠습니다.

감사합니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. hoonseung님.

질문해주신 pub/sub과 producer/consumer 패턴은 메시지 전달 방식에서 중요한 개념들입니다.

  1. Pub/Sub(발행/구독) 패턴:

    • 이 패턴에서는 여러 발행자(Publisher)가 특정 주제(Topic)에 메시지를 게시하면, 그 주제를 구독한 모든 수신자(Subscribers)들에게 메시지가 전달됩니다. 쉽게 말해, 방송국이 특정 채널로 시그널을 보내고, 그 채널을 보고 있는 모든 사람들이 동시에 그 방송을 시청하는 것과 비슷합니다.
    • 사용 예: WebSocket은 이러한 발행/구독 모델을 쉽게 구현할 수 있는 프로토콜 중 하나입니다. WebSocket을 사용하면 서버에서 클라이언트로 실시간 메시지를 발행할 수 있으므로, 여러 클라이언트가 동시에 메시지를 수신할 수 있습니다.
  2. Producer/Consumer 패턴:

    • 이 패턴에서는 하나의 큐가 있고, 여러 생산자(Producer)가 메시지를 큐에 넣으며, 소비자(Consumer)는 큐에서 메시지를 가져와 처리합니다. 일반적으로 한 메시지는 한 생소비자에 의해서만 처리된다는 특징이 있습니다. 이는 메시지의 중복 처리를 방지하기 위한 구조입니다.
    • 사용 예: RabbitMQ는 이 패턴을 기반으로 동작하며, 메시지 큐를 사용하여 여러 고객이 동시에 처리할 수 있는 비동기 작업 처리를 돕습니다. 큐에 들어간 메시지는 한 소비자에게만 전달되며, 이로 인해 메시지의 독점적 소비가 가능합니다.

따라서, RabbitMQ는 주로 Producer/Consumer 패턴을 구현하는 데 사용되고, WebSocket은 Pub/Sub 모델을 구현하는 데 강점을 가지고 있습니다. 하지만 RabbitMQ에서도 다양한 교환기(Exchange)를 사용하여 Pub/Sub 전송 방식을 일부 구현할 수 있습니다.

이 내용을 바탕으로 좀 더 정보를 얻고 싶다면, 다음의 관련 질문을 참고하시기 바랍니다:
- “MSA 환경에서 브로드캐스트는 어떻게 이루어지나요?” 질문과 답변

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

16 강의 메세지 retryCount의 의도

0

12

1

step 4 - fanout 관련 질문

0

67

2

dlx dlq 설정 관련

0

64

1

동적 큐 이름 설정 방법 및 SimpleRabbitListenerContainerFactory의 재정의에 따른 Retry 설정 미적용 관련 질문입니다.

0

95

1

강의 자료 관련

0

83

2

인증 에러

0

80

2

RabbitMQ에서의 트랙잭션 메시징 질문

0

109

2

Producer/Consumer 단위

0

71

2

안녕하세요 섹션2. 12번 강의에서 질문 있습니다.

0

82

2

안녕하세요 "섹션2 8. Consumer간 작업 분배" 에서 질문 있습니다.

0

88

2

컨슈머 서버 질문드립니다

0

79

2

DLQ 관련 질문

0

130

2

알림은 왜 pub sub 구조로 설계하나요?

0

148

2

Receiver를 여러개 하려면 어떻게하나요?

0

139

2

깃허브 step11 브랜치

0

97

1

DLQ 재시도 로직 처리후 DLQ에 unacked 1건이 남는거에 대해서

0

149

2

NotificationMessage가 필요한 이유 질문

0

107

2

스탭4 질문드립니다

0

150

3

생성자 질문드립니다

0

105

2

Pub/Sub & WebSocket 활용한 실시간 알림

0

211

2

채팅 방식 질문입니다!

0

138

2

강의와 살짝 무관하지만.. MQ에 대한 질문이 있습니다!

0

207

1

챕터18 retry yml 강의 부분 질문

0

186

2

tutorial-step4 질문

0

143

2