63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
# RabbitMQ Client Example
|
|
|
|
## Docker에 설치
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
docker run -d --restart=no --name=rabbitmq \
|
|
--hostname rabbit-mq \
|
|
-p 5672:5672 \
|
|
-p 15672:15672 \
|
|
-v /docker/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
|
|
-v docker/rabbitmq/conf.d:/etc/rabbitmq/conf.d \
|
|
-e TZ=Asia/Seoul -e LANG=ko_KR.UTF-8 \
|
|
-e RABBITMQ_DEFAULT_USER=elex -e RABBITMQ_DEFAULT_PASS=test \
|
|
rabbitmq:3.8.11-management
|
|
```
|
|
|
|
## Gradle 디펜던시 추가
|
|
```kotlin
|
|
// https://mvnrepository.com/artifact/com.rabbitmq/amqp-client
|
|
implementation("com.rabbitmq:amqp-client:5.10.0")
|
|
```
|
|
|
|
## 다이렉트 익스체인지
|
|
* 익스체인지는 브로커가 메시지를 받는 곳이다. 즉, 메시지를 보낼 때는 익스체인지로 보내야 한다.
|
|
* 큐는 브로커가 메시지를 보내는 곳이다. 즉, 메시지를 받을 때는 큐로부터 받는다.
|
|
* 익스체인지와 큐는 라우팅-키로 서로 바인딩된다. 여러 개의 라우팅-키로 여러 번 바인딩 할 수도 있다.
|
|
* 익스체인지에 메시지가 도착하면 메시지의 라우팅-키와 일치하는 큐로 메시지를 보낸다.
|
|
|
|
## 팬아웃 익스체인지
|
|
* 라우팅-키 규칙이 무시된다.
|
|
|
|
## 토픽 익스체인지
|
|
* 라우팅-키를 패턴으로 사용한다.
|
|
|
|
## TLS
|
|
```bash
|
|
!/bin/bash
|
|
docker run -d --restart=always --name=rabbitmq \
|
|
--hostname rabbitmq \
|
|
-p 5671:5671 \
|
|
-p 5672:5672 \
|
|
-p 15671:15671 \
|
|
-p 15672:15672 \
|
|
-v /media/rabbitmq/certs:/etc/certs \
|
|
-e TZ=Asia/Seoul -e LANG=ko_KR.UTF-8 \
|
|
-e RABBITMQ_DEFAULT_USER=elex \
|
|
-e RABBITMQ_DEFAULT_PASS=test \
|
|
-e RABBITMQ_SSL_CACERTFILE=/etc/certs/ca.pem \
|
|
-e RABBITMQ_SSL_CERTFILE=/etc/certs/server.pem \
|
|
-e RABBITMQ_SSL_KEYFILE=/etc/certs/server.key.pem \
|
|
-e RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT=false \
|
|
-e RABBITMQ_SSL_VERIFY=verify_none \
|
|
rabbitmq:3.8.11-management
|
|
```
|
|
|
|
-----
|
|
Copyright (c) 2021 Elex.
|
|
|
|
All Rights Reserved.
|
|
|
|
https://www.elex-project.com/
|