개발일기장
Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) 본문
이거 해보려고 이것저것 찾아봤는데 너무 단순하기도 하고, 연결된게 없어서 (사실 내가 귀찮아서 구글링 덜함) 직접 해봤음..
일단 윈도우에서 rabiitmq설치하고 뭐 그러는거 복잡하기도하고 좀 그래서 docker위에서 돌리는걸로 했음.
이게 브라우저에서 매니져 할 수 있게하는 PORT랑, Message Queue에 public,consume하는 PORT가 서로 다르니깐 주의하고,,
실행하고 브라우저로 접속하면 이렇게 뜬다.
계정설정은 처음에 docker로 시작할때 아무것도 안하면 guest/guest로 (ID/PWD) 로그인해주자.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
근대 AMQP에서 중요한게 Exchange, Queues, Binding임
다른거 예제보니깐 이거에 대해서 말을 잘 안해줘서 고생했음
짧게 정리하자면
1. Exchange라는 컴포넌트 만들고 (하나의 서버느낌? 표현을 못하겠다. 이것저것 설정을 할 수 있다.)
2. Queue를 만들고.
3. Binding은 Exchange로 들어오는 메시지에 대해서 어느 Queue로 갈지 설정해 줄 수 있는것.
node.js script로도 만들 수 있지만 브라우져에서하는게 더 이해가 빠를거임.
1. Exchange를 만든다.
Exchange 텝으로가면 밑에 Add a new exchange가 있을탠데 여기서 이름이랑 이것저것 사용규칙 설정을 해주면 됨.
설정 다 하고 Add exchange누르면 완성
여기서는 나는 Exchange이름을 MyTest로 했다.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2. Queue를 만든다.
위에 Queues 탭으로가서 여기서도 Add a new queue를 누르고 Exchange처럼 만들어준다.
이것도 설정있는데 그냥 기본으로 하자. 이름은 아무거나 해도됨 나는 MyTestRabbit으로 했음.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3. Exchange에서 Queue를 Binding해주자
다시 Exchange 탭으로 와서
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
방금만든 MyTest를 클릭해주면.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이런게 뜬다 . 여기서 Binding을 해주면 됨.
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
MyTest라는 Exchange는 GoodBye라는 Routing key를 통해서 MyTestRabbit Queue에 연결을 해주는것.
그리고 Bind 버튼을 눌러주면
![](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이런게 뜨면 끝임.
위에 했던거를 node.js script로 하고싶으면. npm 에서 amqplib 다운받고
npm i amqplib
const amqp = require('amqplib');
const MQ_URL = 'amqp://guest:guest@localhost:5672';
const script = async ()=> {
console.log('세팅 시작')
// 서버와 연결해주자.
const connection = await amqp.connect(MQ_URL)
// 채널을 만들고
const channel = await connection.createChannel()
// 1. Exchange를 만들자.
await channel.assertExchange('MyTest', 'direct', { durable: true })
// 2. Queue를 만들고
await channel.assertQueue('MyTestRabbit', { durable: true })
// 3. 만들어진 Queue에 대해서 Exchange에서 바인딩 해주자.
// Exchange, Queue, Routing Key
await channel.bindQueue('MyTest', 'MyTestRabbit', 'GoodBye')
console.log('설정 끝')
process.exit()
}
script();
그냥 이렇게 실행시켜주면 끝임.
너무길어서 Publish랑 consume하는거는 다음글로 ㄱ
'node.js' 카테고리의 다른 글
Node.JS 웹 크롤링으로 Promise.all 성능 비교 (수정: 이거 다 틀렸음) (0) | 2022.05.18 |
---|---|
Node.JS로 웹 크롤링 하기. puppeteer, cheerio, 동적 크롤링 (0) | 2022.05.18 |
Node.js에서 RabbitMQ(AMQP) 사용하기. Consume (3) (0) | 2021.07.28 |
Node.js에서 RabbitMQ(AMQP) 사용하기. Publish (2) (0) | 2021.07.28 |
express multer 자꾸 까먹어서 (0) | 2020.09.05 |