Задать вопрос
@tikhonov_alexander

Как поставить на паузу очередь RabbitMQ?

Всем привет. Нужно после получения данных из rabbmit поставить на паузу получение данных из почереди.
const amqp = require("amqplib/callback_api");

var connection;
var queueName = "test";
var chanel;

amqp.connect("amqp://localhost", (err, conn) => {
	if (err) {
		console.log("Error connect");
		process.exit();
	}
	connection = conn;
	conn.createChannel((err, ch) => {
		chanel = ch;
		ch.assertQueue(queueName, {
			durable: false
		});
		ch.consume(queueName, () => {
                        // тут нужно поставить на паузу. после обработки данных нужно возобновить получение данных
			console.log(msg.content.toString());
		}, {noAck: false});
	});
});
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@pasutavitaliy
:)
Привет. Тебе не нужно ставить на паузу очередь) Это не верно архитектурно.
Если тебе нужно обработать данные и дальше отправить уже обработанные данные, то тебе нужно еще одну очередь.
Например одна очередь augmenter, которая слушает все сообщения, обрабатывает и пушит дальше в другую очередь.
И вторая, например, persister, которая слушает по другому ключу другую очередь (augementer) и делает с этими данными что то там еще (например сохраняет в базу данных).

В итоге:
- у тебя слабая связаность между этими логическими модулями
- если упадет одна из очередей, вторая сможет и дальше обрабатывать существующие сообщения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы