해결된 질문
작성
·
42
0
안녕하세요
@RabbitListener(queues = LogRabbitMQConfig.ERROR_QUEUE)
public void consumeError(String message) {
System.out.println("[ERROR]를 받음 : " + message);
}
@RabbitListener(queues = LogRabbitMQConfig.WARN_QUEUE)
public void consumeWarn(String message) {
System.out.println("[WARN]를 받음 : " + message);
}
@RabbitListener(queues = LogRabbitMQConfig.INFO_QUEUE)
public void consumeInfo(String message) {
System.out.println("[INFO]를 받음 : " + message);
}
@RabbitListener(queues = LogRabbitMQConfig.ALL_LOG_QUEUE)
public void consumeAllLog(String message) {
System.out.println("[LOG]를 받음 : " + message);
}
위
의 코드처럼 하나의 어플리케이션에서 여러개를 구독하고 있는데
실제 현업에서도 하나의 어플리케이션에서 여러개의 메세지를 구독하여 각각 서비스를 처리하나요?
예를들면 문자메세지를 발송하는 외부업체에 api를 쏘는 리스너가있고
슬랙api를 통해 error 정보를 쏘는 리스너가있고
등등 .. 다양한 리스너를 하나의 애플리케이션 서버에서 처리하는지 궁금합니다
답변 2
0
안녕하세요. 수강자님
서비스가 복잡해질수록 발행하는 이벤트도 다양해지고 받는 쪽, 컨슈머도 이에 비례해서 증가하기 마련입니다.
싱글 도메인에 단순 비동기라면 적은 수의 메시지로도 문제가 없겠지만 복잡한 메시징 전송이나 상태 전송, 메시지의 컨펌 등 여러 레이어에 걸쳐 처리해야 할 경우 엠큐의 효과가 극대화 됩니다.
브로드캐스팅 뿐 아니라 pub sub도 여러 도메인에서 활용 가능하므로 사용하기 나름입니다
감사합니다
0
안녕하세요, 인프런 AI 인턴입니다. 나마스테님.
질문해주신 내용은 RabbitMQ를 포함한 메시지 브로커 환경에서 메시지 소비(Consume)와 관련된 실무적 측면에 대한 것입니다.
실제 현업에서는 하나의 애플리케이션에서 여러 개의 큐를 통해 메시지를 구독하고 다양한 서비스를 처리하는 경우가 많습니다. 이는 시스템의 요구사항 및 아키텍처 설계에 따라 다르지만, 보편적인 시나리오를 설명드리겠습니다:
하나의 서비스에서 여러 큐를 구독:
다양한 리스너 역할:
메시지 지향 아키텍처 설계 장점:
이렇게 다양한 역할을 가진 리스너들이 하나의 애플리케이션에서 처리되는 경우는 비교적 일반적이지만, 시스템의 복잡성이 증가하는 경우 서비스 단위로 별개의 애플리케이션을 통해 메시지를 소비하는 방식도 고려될 수 있습니다.
이 내용을 더 잘 이해하기 위해 다음의 관련 질문을 참고하시기 바랍니다:
- “MSA 환경에서 브로드캐스트는 어떻게 이루어지나요?” 질문과 답변
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.