일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 클러스터
- Docker
- gradle
- spring
- Jenkins
- SpringBoot
- java
- EMR
- 레디스
- 자바
- config
- aws
- 예제
- redash
- 자동
- 젠킨스
- 머신러닝
- login
- Cluster
- hive
- vue
- Kafka
- ec2
- Redis
- Zeppelin
- 설정
- 로그인
- Mac
- 간단
- fastcampus
- Today
- Total
코알못
5분 안에 구축하는 Rabbitmq 본문
# 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 서비스
# 테스트
1. 예제 소스 procedure 어플리케이션 구동
- 정의한 exchange 생성됨.
- 정의한 큐 생성됨.
2. procedure 모듈의 '/send' API 를 이용하여 procedure 에 메세지 전송
3. 예제 소스 consumer 어플리케이션 구동
- 구동하면 바로 메세지를 읽어 들인다.(큐를 구독하고 있다가 메세지가 있으면 처리할 수 있는 서버가 처리하는 형태)
4. 로그 확인
- 메세지를 넣었던 순서대로 출력된다.
'JAVA' 카테고리의 다른 글
5분 안에 구축하는 Redis(레디스) (1) | 2021.02.15 |
---|---|
[에러] NoClassDefFoundError: com/fasterxml/jackson/databind/JsonSerializer (0) | 2021.02.15 |
5분 안에 구축하는 Quartz 동적 스케쥴링 (4) | 2021.01.30 |
[설치/설정] 5분 안에 설정 하는 Mac에 자바 여러 버전 설치/설정 (3) | 2021.01.30 |
5분 안에 구축하는 Ehcache (0) | 2020.11.28 |