Как разделить код rabbitMQ по компонентам? - PullRequest
0 голосов
/ 27 марта 2019

Я хочу разделить свой код соединения 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;

1 Ответ

0 голосов
/ 27 марта 2019

Ответ скопирован с здесь

Это общий вопрос Javascript, а не специфический для RabbitMQ или библиотеки amqplib.

Я полагаю, что вы можете открыть соединение по адресууровень модуля и использовать его в вашем методе passSomeData.Или passSomeData может лениво открывать соединение, если переменная «connection» на уровне модуля имеет значение null, и затем повторно использовать это соединение.

В какой-то момент вам может понадобиться использовать пул соединений, но это зависит отваш сценарий использования и рабочая нагрузка.


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует список рассылки rabbitmq-users и только иногда отвечает на вопросы в StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...