코알못

5분 안에 구축하는 Rabbitmq 본문

JAVA

5분 안에 구축하는 Rabbitmq

코린이s 2020. 11. 28. 14:15
728x90

# Rabbitmq 란?

- 메세징 큐 시스템

- 얼랭(Erlang)으로 AMQP 를 구현한 메시지 브로커 시스템.

* 얼랭 : 범용 병렬 프로그래밍 언어

* AMQP(Advanced Message Queuing Protocol, 어드밴스트 메시지 큐잉 프로토콜) : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜.

# 아키텍쳐

- producer : 메세지를 보내는 아이

- exchange : 메세지를 목적지(큐)에 맞게 전달하는 아이

- queue : 메세지를 쌓는 아이

- consumer : 메세지를 받는 아이

>> Producer(Sender)가 메세지를 보내면, exchange에서 해당하는 키에 맞게 큐에 분배를(바인딩 or 라우팅) 하고, 해당 큐에서 Consumer(Receiver)가 메세지를 받음.

# exchange 모드

- Direct : bindKey = exchange 같은 큐에 전달
- Topic : bindKey, exchange 일부 패턴이 같은 큐에 전달
- Fanout : 전체 전달

# Virtual host란?

- 가상 호스트로 사용자마다 가상 호스트에 권한을 부여하여, 권한이 있는 사용자만 접근하도록 할 수 있다.


# 구현

* 개발 환경
- mac os catalina
- java 15
- rabbitmq client 5.10.0
- rabbitmq server 3.8.9
- spring boot 2.4.0
- gradle 6.6.1

# rabbitmq mac 설치
$ brew install rabbitmq

# rabbitmq start
$ /usr/local/sbin/rabbitmq-server

# rabbitmq manager ui
- http://localhost:15672
- 기본 계정 
> guest / guest

# rabbitmq 계정 생성
$ /usr/local/sbin/rabbitmqctl add_user admin admin

# admin 권한 부여
$ /usr/local/sbin/rabbitmqctl set_user_tags admin administrator

# 계정 보기
$ /usr/local/sbin/rabbitmqctl list_users

 

# vhost 생성
$ /usr/local/sbin/rabbitmqctl add_vhost vhost-01

# 유저 vhost 권한 부여
예) rabbitmqctl list_permissions [-p <vhost>] <user> <conf> <write> <read>
$ /usr/local/sbin/rabbitmqctl set_permissions -p vhost-01 admin ".*" ".*" ".*"

# rabbitmq Producer & Consumer 구축

- 예제 소스 : github.com/works-code/rabbitmq

- 메세지를 출력하는 rabbitmq 서비스

 

works-code/rabbitmq

rabbitmq basic starter kit. Contribute to works-code/rabbitmq development by creating an account on GitHub.

github.com

# 테스트

1. 예제 소스 procedure 어플리케이션 구동

- 정의한 exchange 생성됨.

exchenge 생성

- 정의한 큐 생성됨.

queue 생성

2. procedure 모듈의 '/send' API 를 이용하여 procedure 에 메세지 전송 

postman 을 활용하여 API 호출
rabbitmq ui를 보면 메세지가 쌓인것을 확인 할 수 있음

3. 예제 소스 consumer 어플리케이션 구동

- 구동하면 바로 메세지를 읽어 들인다.(큐를 구독하고 있다가 메세지가 있으면 처리할 수 있는 서버가 처리하는 형태)

4. 로그 확인

- 메세지를 넣었던 순서대로 출력된다.

728x90
Comments