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

  • А для rust случаем нет обёртки?

  • @ax-hack said in Node.js RabbitMQ как подружить?:

    А для rust случаем нет обёртки?

    нет

  • @sergerdn Помогло, только события ловит через раз, в отличии от чистой ноды :-D

  • @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

    Если у вас везде код то лучше писать через те либы и не заморачиваться, зато сможете по человеческий написать код

  • 0 Votes
    1 Posts
    239 Views
  • 0 Votes
    1 Posts
    267 Views
  • 0 Votes
    3 Posts
    335 Views
  • 0 Votes
    12 Posts
    3227 Views
  • 0 Votes
    3 Posts
    749 Views