Установка параметра Heartbeat при коннекте к RabbitMQ через Amqplib

При коннекте к RabbitMQ через amqplib не удается установить значение параметра Heartbeat.

Делаю так:

// Модули NPM
const amqp = require('amqplib/callback_api');
const withAutoRecovery = require('amqplib-auto-recovery');

// Конфигурация приложения
const config = settings.getConfig();

withAutoRecovery(amqp, {
  onError: (err) => { console.log(err.message); },
  isErrorUnrecoverable: (err) => { console.log(err) }
}).connect(config.rabbitmq, (err, connection) => {
    // Если есть ошибки при коннекте
    if (err) {
        console.error(this.conn_str_amqp);
        console.error('[AMQP] Ошибка коннекта:', err.message); 
    } else if (connection) {
        // Событие ошибки при соединении
        connection.on('error', (err) => {
            if (err.message !== 'Connection closing') {
                console.error('[AMQP] Закрытие подключения:', err.message);
            }
        });
        // Событие ошибки при закрытии соединения
        connection.on('close', () => {
            console.error('[AMQP] Соединение закрыто');
        });
        // Подсказка пользователю
        console.log('[AMQP] Подключено');
    }
});

Здесь config.rabbitmq это:

{
  protocol: 'amqp',
  hostname: 'localhost',
  port: 5672,
  username: 'guest',
  password: 'guest',
  locale: 'en_US',
  frameMax: 0x1000,
  heartbeat: 1800,
  vhost: '/',
}

Я ожидаю получить значение параметра Heartbeat = 1800s, в окне UI Managment отображается значение по-умолчанию Heartbeat = 60s.

Скриншот: введите сюда описание изображения

Пробовал еще передавать вместо объекта config.rabbitmq строчку (https://www.rabbitmq.com/uri-spec.html и https://www.rabbitmq.com/uri-query-parameters.html) в формате:

function getRabbitMQConnectionString() {
    const rabbitmq = config.rabbitmq;
    return `${rabbitmq.protocol}://${rabbitmq.username}:${rabbitmq.password}@${rabbitmq.hostname}:${rabbitmq.port}${encodeURIComponent(rabbitmq.vhost)}?heartbeat=${rabbitmq.heartbeat}`;
}

Таким образом получился тоже аналогичный вышеописанный эффект.

Подскажите, пожалуйста, как правильно установить параметр Heartbeat через клиентское приложение Node.js на amqplib?


Ответы (0 шт):