개발일기장
Node.js에서 RabbitMQ(AMQP) 사용하기. Publish (2) 본문
728x90
2021.07.28 - [node.js] - Node.js에서 RabbitMQ(AMQP) 사용하기. 브라우저에서 설정 (1)
여기서 이어지는 글입니다.
3초마다 메시지를 보내는 Publish를 만들어보자.
1. 일단 메시지를 보내는 함수를 만든다.
const publishToChannel = (channel, { routingKey, exchangeName, data }) => {
return new Promise((resolve, reject) => {
//1. Publish할 때는 Exchange이름, RoutingKey를 넣어주고.
channel.publish(exchangeName,routingKey,
// 2. 메시지를 보낼때는 직렬화 후 버퍼에 담아서.
Buffer.from(JSON.stringify(data), 'utf-8'),
// 3. 설정 후
{ persistent: true },
// 4. 메시지 보낸 이후 Promise return
(err, ok) => {
if (err) {
return reject(err);
}
resolve();
}
);
});
};
만들어진 channel이랑, Publish할 때 필요한 데이터들을 받는다.
2. 채널을 연결하고 3초마다 함수를 실행하자.
const sendMessage = async () => {
const connection = await amqp.connect(amqpURL);
const channel = await connection.createConfirmChannel();
let counter = 1;
await setInterval(() => {
//메시지 카운터는 늘어나고..
const msg = `hello ${counter++}`;
console.log(msg);
publishToChannel(channel, {
routingKey: 'GoodBye',
exchangeName: 'MyTest',
data: { Message: msg },
});
//3초마다 전송
}, 3000);
};
이전 포스트에서 설정한 Exchange 'MyTest', 에 대한 Routing Key 'GoodBye'를 적어주고, 메시지는 카운터를 증가시켜주는 방향으로 했다.
전체 코드
const amqp = require('amqplib');
const amqpURL = 'amqp://guest:guest@localhost:5672';
const sendMessage = async () => {
const connection = await amqp.connect(amqpURL);
const channel = await connection.createConfirmChannel();
let counter = 1;
await setInterval(() => {
//메시지 카운터는 늘어나고..
const msg = `hello ${counter++}`;
console.log(msg);
publishToChannel(channel, {
routingKey: 'GoodBye',
exchangeName: 'MyTest',
data: { Message: msg },
});
//3초마다 전송
}, 3000);
};
const publishToChannel = (channel, { routingKey, exchangeName, data }) => {
return new Promise((resolve, reject) => {
//1. Publish할 때는 Exchange이름, RoutingKey를 넣어주고.
channel.publish(exchangeName,routingKey,
// 2. 메시지를 보낼때는 직렬화 후 버퍼에 담아서.
Buffer.from(JSON.stringify(data), 'utf-8'),
// 3. 설정 후
{ persistent: true },
// 4. 메시지 보낸 이후 Promise return
(err, ok) => {
if (err) {
return reject(err);
}
resolve();
}
);
});
};
sendMessage();
그리고 실행시켜보자.
이렇게 뜰것이다.
그리고 브라우저로 가서 Queues 탭으로 가서 아까만든 MyTestRabbit Queue로 가보면
받았던 메시지가 13개 준비되어 있다고 나온다.
이러면 문제없이 잘 된것
이것도 너무 길어서 다음 포스트에 Consume하는걸로...
728x90
'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) 사용하기. 브라우저에서 설정 (1) (2) | 2021.07.28 |
express multer 자꾸 까먹어서 (0) | 2020.09.05 |
Comments