0
nodejs amqplib 모듈을 사용하여 rabbitmq를 연결합니다. 소비 함수가 클로저 함수가된다는 것을 알았지 만 이유를 이해할 수 없습니다. 나는 폐쇄를 사용하지 않았다.amqplib 소비 기능이있는 nodej가 닫히는 이유는 무엇입니까?
내 코드는 다음과 같습니다. returnOK에서 corr이 여전히 처음 값을 얻은 것을 발견했습니다. 이 기능을 두 번째 발사 할 때. corr은 처음에는 여전히 값입니다. 이상하게 생각합니다. 누군가 설명 할 수 있니?
const corr = new Date().getTime();
try {
const params = JSON.stringify(req.body);
console.log('corr first =', corr);
await ch.sendToQueue(q, Buffer.from(params), {
deliveryMode: true,
correlationId: corr.toString(),
replyTo: queue.queue,
});
const returnOK = (msg) => {
if (msg.properties.correlationId === corr.toString()) {
console.info('******* Proxy send message done *******');
res.status(HTTPStatus.OK).json('Done');
}
};
await ch.consume(queue.queue, returnOK, { noAck: true });
} catch (error) {
res.status(HTTPStatus.INTERNAL_SERVER_ERROR).json(error);
}
좋아, 해보겠습니다. returnOK 함수가 왜 닫혀 있는지 궁금합니다. – Rukeith
@ 루키스 그렇지 않습니다. 각 요청마다 returnOK 인스턴스를 하나씩 생성합니다. 그리고 각각은'ch.consume' 호출로부터 하나의 리스너에 연결됩니다. 마찬가지로 두 번째 요청을하면 첫 번째 요청의 수신기가 패킷을 가져 와서 returnOK의 첫 번째 인스턴스를 호출합니다. –
@ 루키스. 리스너, 즉'ch.consume'에 대해 더 많이 읽어야한다고 생각합니다. 대기열에서 메시지를 받고 싶을 때마다 전화하는 것이 아닙니다. –