개발일기장

Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1) 본문

node.js

Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1)

게슬 2021. 7. 28. 10:23
728x90

이거 해보려고 이것저것 찾아봤는데 너무 단순하기도 하고, 연결된게 없어서 (사실 내가 귀찮아서 구글링 덜함) 직접 해봤음..

일단 윈도우에서 rabiitmq설치하고 뭐 그러는거 복잡하기도하고 좀 그래서 docker위에서 돌리는걸로 했음.

 

이게 브라우저에서 매니져 할 수 있게하는 PORT랑, Message Queue에 public,consume하는 PORT가 서로 다르니깐 주의하고,,

 

실행하고 브라우저로 접속하면 이렇게 뜬다.

계정설정은 처음에 docker로 시작할때 아무것도 안하면 guest/guest로 (ID/PWD) 로그인해주자.

 

로컬에서 돌아가는 RabbitMQ

근대 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로 했다.

 

Exchange설정창
만들어진 Exchange

2. Queue를 만든다.

위에 Queues 탭으로가서 여기서도 Add a new queue를 누르고 Exchange처럼 만들어준다.

이것도 설정있는데 그냥 기본으로 하자. 이름은 아무거나 해도됨 나는 MyTestRabbit으로 했음.

Queue만들기
만들어진 Queue

 

3. Exchange에서 Queue를 Binding해주자

 

다시 Exchange 탭으로 와서

방금만든 MyTest를 클릭해주면.

이런게 뜬다 . 여기서 Binding을 해주면 됨.

MyTest라는 Exchange는 GoodBye라는 Routing key를 통해서 MyTestRabbit Queue에 연결을 해주는것.

그리고 Bind 버튼을 눌러주면

이런게 뜨면 끝임.

 

위에 했던거를 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하는거는 다음글로 ㄱ

 

728x90
Comments