Ошибка: гнездо внезапно закрылось при открытии рукопожатия - PullRequest
0 голосов
/ 02 ноября 2019

Я попробовал программу hello world, используя node.js с rabbitmq pub / sub. Здесь я отправляю привет миру сообщение через публикацию и получил это сообщение в подписке. здесь проблема не в состоянии соединить rabbitmq используя ampqlib. Вот мой код

издатель:

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://username:password@000.000.0.00:15672', function (error0, connection) {
    console.log('error:', error0);
    console.log('connection:', connection);
    if (error0) {
        throw error0;
    }
    connection.createChannel(function (error1, channel) {
        if (error1) {
            throw error1;
        }

        var queue = 'hello';
        var msg = 'Hello World!';

        channel.assertQueue(queue, {
            durable: false
        });
        channel.sendToQueue(queue, Buffer.from(msg));

        console.log(" [x] Sent %s", msg);
    });
    setTimeout(function () {
        connection.close();
        process.exit(0);
    }, 1000);
});

подписчик:

const observationManager = require('../src/query/graphql/resources/4_0_0/business/observation');

const MongoClient = require('mongodb');

const logger = require('../src/lib/winston')({ level: 'debug' });

var amqp = require('amqplib/callback_api');

amqp.connect('amqp://username:password@000.000.0.00:15672', function (error0, connection) {
    if (error0) {
        throw error0;
    }
    connection.createChannel(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('queue message:', msg);
            let client = await MongoClient.connect('mongodb://localhost:27017', {
                useNewUrlParser: true,
                useUnifiedTopology: true
            });
            this.client = client;
            this.db = client.db('rabbitmqdb');
            await observationManager.createNewObservation(db, msg, logger);
            console.log(" [x] Received %s", msg.content.toString());
        }, {
            noAck: true
        });
    });
});

Я настроил rabbitmq, и он работает, я могу войти в систему с экрана rabbitmq enter image description here

...