개발일기

RabbitMQ - Node.js로 RabbitMQ 연결하기 본문

Messaging Broker/RabbitMQ

RabbitMQ - Node.js로 RabbitMQ 연결하기

Flashback 2023. 3. 22. 21:12
728x90
반응형

1. 설치

1-1. amqplib 설치

npm install amqplib -D
yarn add amqplib -D
# rabbitmq에 연결하기 위해 amqplib를 설치한다.

 

1-2. dotenv 설치

npm install dotenv -D
yarn add dotenv -D
# RabbitMQ연결 정보가 저장된 .env파일을 사용하기 위해 설치한다.

 

2. .env파일 생성

# .env
RABBITMQ_HOST=ip
RABBITMQ_ID=아이디
RABBITMQ_PASSWORD=비밀번호
RABBITMQ_PORT=포트번호 # 기본은 5672포트
RABBITMQ_VHOST=가상호스트

루트 폴더에 .env파일을 생성하여 RabbitMQ 연결에 필요한 정보들을 입력하여 저장한다.

 

3. RabbitMQ 연결할 index.js 생성

import dotenv from 'dotenv';
import amqplib from 'amqplib/callback_api.js'

dotenv.config(); // 루트 폴더에 있는 .env 파일을 가져와 사용

amqplib.connect({
    'hostname': process.env.RABBITMQ_HOST,
    'username': process.env.RABBITMQ_ID,
    'password': process.env.RABBITMQ_PASSWORD,
    'port': process.env.RABBITMQ_PORT,
    'vhost': process.env.RABBITMQ_VHOST
}, (err, conn) => {
    if(err) {
        console.log("Err: ", err); // 연결이 실패한 경우 에러 메시지 출력
        return false;
    }
    
    // 연결 된 경우 채널 생성
    conn.createChannel((err, ch) => {
        if(err) {
            console.log("Err: ", err); // 채널 생성에 실패한 경우 에러 메시지 출력
            return false;
        }

        // 큐 생성 및 채널에서 실행할 코드들 입력
    });
})
  • connect() : RabbitMQ에 연결하기 위해 사용한다. 첫번째 객체 파라미터에는 호스트이름, 계정  아이디, 비밀번호, 포트번호, 가상 호스트명 등을 입력하여 RabbitMQ 연결에 필요한 정보들을 추가한다. RabbitMQ의 기본 포트는 5672로 포트번호를 따로 변경하지 않았으면 생략해도 무관하다. 포트 항목을 생략하면 자동으로 5672로 설정되어 연결을 시도한다. callback_api.js로 import하였기에 에러와 연결 정보를 반환한다.
    • callback err : 연결이 실패했을 때, 실패한 이유를 반환한다.
    • callback conn : 연결이 성공했을 때, 연결 정보등을 반환한다. 성공했을 때의 콜백 변수를 통해 채널을 생성하여 RabbitMQ관련 작업을 진행할 수 있다.
  • createChannel() : RabbitMQ에 연결된 후, 채널을 생성한다.
    • callback err : 채널 생성이 실패했을 대, 실패한 이유를 반환한다.
    • callback ch : 채널 생성 후, 큐를 생성하거나 exchange를 생성하는 등의 작업을 진행할 수 있다.

 


참고 사이트 : 

https://levelup.gitconnected.com/introduction-to-rabbitmq-with-nodejs-61e2aec0c52c

 

Introduction to RabbitMQ with Nodejs

Asynchronous communication for event driven services

levelup.gitconnected.com

 

https://amqp-node.github.io/amqplib/channel_api.html

 

amqplib | Channel API reference

Channel-oriented API reference There are two parallel client APIs available. One uses promises, and the other uses callbacks, mutatis mutandis. Since they present much the same set of objects and methods, you are free to choose which you prefer, without mi

amqp-node.github.io

 

https://www.npmjs.com/package/amqplib

 

amqplib

An AMQP 0-9-1 (e.g., RabbitMQ) library and client.. Latest version: 0.10.3, last published: 7 months ago. Start using amqplib in your project by running `npm i amqplib`. There are 3972 other projects in the npm registry using amqplib.

www.npmjs.com

 

https://www.cloudamqp.com/docs/nodejs.html

 

Node.js Documentation - CloudAMQP

Get started with CloudAMQP and Node.js. Here is our recommended library and examples to get you up and running.

www.cloudamqp.com

 

728x90
반응형
Comments