Я хочу разделить свой код соединения rabbitMQ и вызвать его по разным компонентам, чтобы он (соединение и канал) только инициализировал ОДИН РАЗ, и я могу использовать его всякий раз вместо необходимости открывать соединение снова, когда я хочу его использовать.
Что происходит сейчас, я вызываю приведенную ниже функцию кода снова и снова каждый раз, когда хочу передать что-то в мой обмен и очередь.(поэтому, если я хочу передать 20 индивидуальных данных в rabbitMQ, я заканчиваю тем, что открыл и закрыл как соединение, так и канал 20 раз)
Есть какие-нибудь решения?
const exchange = "Exchange";
const queue = "Queue";
const passSomeData= async payload => {
amqp = require("amqplib").connect("amqp://localhost");
let ch;
let connection;
let publish = amqp
.then(function(conn) {
connection = conn;
return conn.createConfirmChannel();
})
.then(function(chn) {
ch = chn;
ch.assertQueue(queue, { durable: true });
return ch.assertExchange(exchange, "topic", { durable: true });
})
.then(function() {
const data = {
content: "x",
title: "y",
};
ch.bindQueue(queue, exchange, "routingKey");
return ch.publish(exchange, "routingKey", Buffer.from(JSON.stringify(data)), {
persistent: true
});
})
.then(() => {
setTimeout(function() {
connection.close();
}, 250);
});
};
module.exports = passSomeData;