Home
Java
Apache ActiveMQ (Message Queue와 JMS)
devfoxstar
devfoxstar
March 10, 2022
1 min

Table Of Contents

01
MQ (Message Queue)
02
JMS (Java Message Service)
03
ActiveMQ 프로세스

ActiveMQJMS 클라이언트를 활용해서 자바로 작성된 오픈 소스 메시지 브로커입니다.
클라이언트나 서버의 통신을 위한 다양한 엔터프라이즈 기능을 제공합니다.


MQ (Message Queue)

동기 방식은 요청이 들어오면 처리가 완료될 때까지 블로킹 상태에 빠집니다.
그래서 처리 속도가 느리고, 성능 이슈가 자주 발생합니다.

반면, 메시지 큐는 요청과 처리가 분리됩니다.
요청은 계속해서 브로커의 큐에 쌓이고, 처리는 연결된 컨슈머에서 별도로 실행됩니다.

  • 장점
    • 비동기 (Asynchronous) : 요청과 처리가 분리
    • 비동조 (Decoupling) : 어플리케이션과 메시지 시스템을 분리
    • 탄력성 (Resilience) : 개별 실패에 따른 시스템 영향도 없음
    • 과잉 (Redundancy) : 실패해도 재실행 가능
    • 보증 (Guarantees) : 작업 완료 확인 가능
    • 확장성 (Scalable) : 멀티 프로세스 지원
  • 활용
    • 대용량 데이터 처리
    • 비동기 데이터 처리
    • 실시간 데이터 처리
  • 종류
    • ActiveMQ, RabbitMQ는 다양한 기능 활용이 필요할 때 사용
    • Kafka는 컨슈머가 직접 브로커의 메시지를 PULL하는 방식으로 컨슈머 성능에 맞는 최적의 처리가 가능해서 대용량 데이터에 사용

JMS (Java Message Service)

JMS는 메시지 통신을 위한 자바 기반의 MOM (Message Oriented Middleware) API입니다.
2001년 1.0 버전이 배포된 이후, 2013년 2.0 버전이 배포됐습니다.

  • Message Broker : 메시지를 전달하는 중개자
  • Destination : 전달하는 메시지 모델 (Queue, Topic)
  • Queue : 연결된 순서에 따라 개별 컨슈머에게 메시지 전달
  • Topic : 연결된 모든 컨슈머에게 메시지 전달

ActiveMQ 프로세스

액티브엠큐는 브로커의 역할로 전달된 메시지를 중개하는 역할을합니다.
요청 메시지는 액티브엠큐를 통해 다시 컨슈머에 연결된 리스너로 전달됩니다.

또한 컨슈머에서 데이터를 처리 후에도 추가 메시지를 통해 추가 작업이 가능합니다.

ActiveMQ Workflow
ActiveMQ Workflow

ActiveMQ 공식 사이트


Tags

#Java#Apache#ActiveMQ#MessageQueue#JMS

Related Posts

Java - Record class (불변 데이터 객체 만들기)
June 11, 2024
1 min
© 2024, All Rights Reserved.

Quick Links

About Me

Media