Node.js RabbitMQ как подружить?
-
Приветствую! Имеется составной бот из разных модулей, которые общаются между собой с помощью RabbitMQ очередей. 1 модуль на BAS, его задача открывать сайт которые передаётся по RabitMQ, выполнить действие и послать ответ.
Проблема и вопрос в следующем, попытка запустить код-пример из RabbitMQ, который без проблем работает в чистой Node.js нидаёт никаких результатов
amqp.connect('amqp://localhost', function(error0, connection) { if (error0) { throw error0; } connection.createChannel(function(error1, channel) { if (error1) { throw error1; } var queue = 'hello'; channel.assertQueue(queue, { durable: false }); }); });или
const amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', async function(error0, connection) { if (error0) { throw error0; } connection.createChannel(async function(error1, channel) { if (error1) { throw error1; } var queue = 'hello'; channel.assertQueue(queue, { durable: false }); console.log(" [*] Waiting for messages in %s. To exit press CTRL+C", queue); channel.consume(queue, async function(msg) { console.log(" [x] Received %s", msg.content.toString()); }, { noAck: true }); }); });В чём может быть дело? Почему код не работает? Можете помочь примером, как в BAS запустить прослушивание RabbitQM и запускать череду событий для каждого полученного сообщения через API BAS.
-
@ax-hack said in Node.js RabbitMQ как подружить?:
В чём может быть дело? Почему код не работает? Можете помочь примером, как в BAS запустить прослушивание RabbitQM и запускать череду событий для каждого полученного сообщения через API BAS.
Лучше использовать это https://github.com/CheshireCaat/bas-remote-node или это https://github.com/CheshireCaat/puppeteer-with-fingerprints
-
-
@ax-hack said in Node.js RabbitMQ как подружить?:
@sergerdn Помогло, только события ловит через раз, в отличии от чистой ноды :-D
Надо смотреть конкретный скрипт. RabbitMQ сильно сложнее, чем может показаться на первый взгляд, особенно когда почему-то сходу не взлетает.
Можно сделать так:
- снаружи BAS работает скрипт, который подписался на обновления
- этот скрипт, как получил задание, пишет его в файл
- BAS проверяет файл на наличие задания для него
- BAS отчитывается о статусе задания также в файл
- снаружи BAS скрипт проверят файл с результатом задания и репортит о нем
Я делал подобное, несмотря на кажущуюся сложность, в такой архитектуре сильно проще оказалось работать лично мне, так как BAS скрипт не меняется. Один раз продумал формат общения через файлы и все. А на скрипты можно и тесты написать и брокера сменить и дебажить можно в привычной IDE.
-
@ax-hack said in Node.js RabbitMQ как подружить?:
@sergerdn Помогло, только события ловит через раз, в отличии от чистой ноды :-D
Если у вас везде код то лучше писать через те либы и не заморачиваться, зато сможете по человеческий написать код