[Spring Boot] ActiveMQ (1) - ActiveMQ 의 주요 개념 (MOM, AQMP, MQTT), ActiveMQ 설치

김희정·2024년 1월 9일
0

Spring

목록 보기
14/18

💎 들어가며

이번 포스팅에서는 ActiveMQ의 주요 개념들에 대해 알아보고 설치하는 과정을 정리하였습니다.


1. ActiveMQ 란?

ActiveMQ 슬로건

ActiveMQ자바 기반의 오픈소스 메세지 브로커(Message Broker) 입니다.
ActiveMQ는 교차 언어 클라이언트 및 프로토콜을 제공합니다.

  • Java, C, C++, C# ⇒ OpenWire
  • C, Ruby, Perl, Python, PHP, 등 ⇒ Stomp 지원
  • AMQP v1.0 지원 ⇒ Artemis
  • MQTT v3.1 지원 ⇒ IoT 환경 지원


2. MQ의 주요 개념

2.1 Message Broker

메시지 브로커(Message Broker)는 애플리케이션, 시스템 및 서비스가 서로 간에 통신하고 정보를 교환할 수 있도록 해주는 미들웨어 (중간자 소프트웨어)입니다.

Message Broker


메시지 브로커는 서로 간의 통신을 목적으로 하기 때문에, 메세지를 생성하는 생성자(Producer)소비자(Consumer)로 이루어져있습니다.

생성자와 소비자는 직접 연결하지 않고도 메시지 브로커를 통해 서로 메세지를 주고 받을 수 있습니다.


1.2 MOM, MQ, AMQP

MQ 시스템에서 자주 등장하는 개념인 MOM, MQ, AMQP에 대해 정리해보았습니다.

  • MOM: 독립된 서비스간 데이터를 주고받을 수 있는 형태의 미들웨어 아키텍쳐 개념
  • MQ: MOM을 구현한 시스템
  • AMQP는 MOM을 구현한 프로토콜
  • JMS: MOM을 구현한 자바 API

📬 MOM (Message Oriented Middleware)

MOM(Message Oriented Middleware, 메시지 지향 미들웨어, 이하 MOM)이란 독립된 서비스 간 데이터를 주고받을 수 있는 형태의 미들웨어를 의미합니다.

함수 호출이나 공유 메모리를 이용하여 애플리케이션 간 통신하는 것이 아니라, 메시지 교환을 이용하는 중간 계층에 대한 인프라 아키텍처 개념입니다.

MOM을 통해 여러 분산 시스템 간의 중간자 역할로 결합성을 낮추고, 이들이 서로 실시간 비동기식 데이터를 교환할 수 있도록 도와줍니다.


📬 MQ (Message Queue)

MQ(Message Queue)는 MOM을 구현한 시스템을 의미합니다.

Queue는 선입 선출(First in First out) 구조를 가진 자료 구조로, MQ에서는 Queue 구조를 채택해서 메세지를 전달하는 시스템입니다.

메세지 큐를 통해 메세지를 전달하려면 메세지를 전송자와 수신자가 필요하겠죠? 여기서 메세지를 발행하고 전달하는 송신자를 Producer 라고 하며, 메세지를 받아서 소비하는 수신자를 Consumer 라고 합니다.

메세지 큐는 Producer 와 Consumer 의 메세지 전달 역할을 하는 매개체입니다.
Producer와 Consumer는 다양한 표현으로 설명될 수 있습니다.

송신자 (보내는 쪽)수신자 (받는 쪽)
SenderReceiver
ProducerConsumer
PublisherSubscriber

📬 AMQP (Advanced Message Queuing Protocol)

AMQP는 MOM을 위한 표준 응용 계층 프로토콜입니다. AMQP의 정의 기능들은 메시지 지향, 큐잉, 라우팅, 신뢰성 보안입니다.

과거의 미들웨어 표준들은 API 레벨(ex. JMS)에서 등장하였으나 여러 구현체 간 상호 운용성을 제공하지 않아 구현체간 지원이 불가했습니다.

그래서, 서로 다른 시스템들 간의 최대한 효율적인 방법으로 메세지를 교환하기 위해 AMQP 프로토콜이 등장하게 되었습니다.


JMS (Java Message Service)

JMS는 자바 기반의 MOM API이며, 둘 이상의 클라이언트 간에 메세지를 서로 주고 받을 수 있는 기능을 지원합니다.


1.3 MQTT

MQTT(Message Queueing Telemetry Trasport)는 ISO 표준 (ISO/IEC PRF 20922) 발행-구독 모델 기반의 메시징 프로토콜입니다.

MQTT는 IoT 혹은 대규모 트래픽과 같은 네트워크 대역폭이 제한되는 원격 통신을 위해 만들어진 프로토콜로 TCP/IP 프로토콜 위에서 동작합니다.

MQTT의 통신 방식

MQTT 통신 전개도

  • 연결지향적: MQTT 브로커와 연결을 요청하는 클라이언트는 TCP/IP 소켓 연결을 한 후, 명시적으로 연결을 끊거나 네트워크 사정에 의해 연결이 끊어질 때까지 상태를 유지합니다.

  • 브로커를 통한 통신: MQTT의 발행-구독 메시징 패턴은 오로지 브로커를 통해서만 통신할 수 있습니다. 개설된 Topic에 메시지를 발행하면 해당 Topic을 구독하는 클라이언트들에게 메시지를 발행할 수 있습니다. (1:1, 1:N 통신 가능)



2. Message 방식

ActiveMQ는 큐(Queue)토픽(Topic) 이라는 메시지 전달 방식을 지원합니다.

Message Delivery

  • Queue: 1:1, 메시지를 수신 대기 중인 클라이언트 중 하나에게 전달하는 방식
  • Topic: 1:N, 메시지를 여러 구독자에게 전달하는 방식

3. ActiveMQ 설치

3.1 Java 설치

ActiveMQ는 Java 기반의 브로커이기 때문에 ActiveMQ 설치에 앞서 Java를 설치해주어야합니다.

자바 버전 별로 가용한 ActiveMQ 버전도 상이하니 유의해서 설치해야 합니다.

  • ActiveMQ 5.15.x support Java 8+
  • ActiveMQ 5.17.x support Java 11+
  • ActiveMQ 6.x support Java 17+

3.2 ActiveMQ 다운로드

ActiveMQ는 메세지 브로커로, 메시지 서버로 이해하시면 됩니다.
즉, 서버를 설치하고 실행해야 한다는 것이지요.

ActiveMQ 다운로드 홈페이지

ActiveMQ 공식홈페이지에서 다운로드 받을 수 있습니다.


3.3 Windows에서 ActiveMQ 설치

압축파일로 설치

ActiveMQ 설치 디렉터리

홈페이지에서 받은 압축파일을 해제하여 설치 디렉터리로 만듭니다.

  • ActiveMQ 실행: bin > activemq.bat
  • ActiveMQ 서비스 등록: bin > win64 | win32 > InstallService.bat

ActiveMQ 기본 Port

ActiveMQ는 기본적으로 두가지 포트 61616, 8161을 사용하고 있습니다.
61616은 broker로 사용되고, 8161은 웹 관리 콘솔로 사용됩니다.

포트 설정은 conf/activemq.xml 파일 혹은 conf/jetty.xml 파일에서 관리할 수 있습니다.

ActiveMQ가 정상적으로 실행되었다면, http://localhost:8161 로 웹 관리 콘솔에 접속할 수 있습니다.

ActiveMQ 관리 콘솔

해당 콘솔을 통해 ActiveMQ 의 Producer, Consumer, Queue, Topic 등 다양한 정보를 편리하게 확인할 수 있습니다.


방화벽 설정

만약 접속이 안된다면 인바운드 규칙에 61616, 8161 포트를 추가해주어야합니다.

Windows Defender 방화벽 화면


3.4 ActiveMQ 실행

서비스 프로그램을 열어 ActiveMQ를 실행합니다.

서비스 - ActiveMQ 실행



💎 References


💎 마치며

이번 포스팅에서는 ActiveMQ의 주요 개념인 MQ에 대해 정리해 보는 시간을 가졌습니다! ActiveMQ를 둘러싼 개념들이 조금은 어렵게 느껴졌는데, 블로그 포스팅을 통해 잘 정리해가고 있는 것 같습니다.😎

profile
Java, Spring 기반 풀스택 개발자의 개발 블로그입니다.

0개의 댓글