UNPKG

@message-queue-toolkit/amqp

Version:
26 lines 1.07 kB
import { setTimeout } from 'node:timers/promises'; import { globalLogger } from '@lokalise/node-core'; import { connect } from 'amqplib'; const CONNECT_RETRY_SECONDS = 10; const MAX_RETRY_ATTEMPTS = 10; export async function resolveAmqpConnection(config) { const protocol = config.useTls ? 'amqps' : 'amqp'; let counter = 0; while (true) { const url = `${protocol}://${config.username}:${config.password}@${config.hostname}:${config.port}/${config.vhost}`; const retryTime = CONNECT_RETRY_SECONDS * 1000 * (counter + 1); try { const connection = await connect(url); return connection; } catch (_e) { globalLogger.error(`Failed to connect to AMQP broker at ${config.hostname}:${config.port}. Retrying in ${retryTime / 1000} seconds...`); } await setTimeout(retryTime); counter++; if (counter > MAX_RETRY_ATTEMPTS) { throw new Error('Failed to resolve AMQP connection'); } } } //# sourceMappingURL=amqpConnectionResolver.js.map