constructor(opts) {
		if (typeof opts === "string") opts = { url: opts };
		else if (opts == null) opts = {};

		// Number of requests a broker will handle concurrently
		if (typeof opts.prefetch !== "number") opts.prefetch = 1;

		// Number of milliseconds before an event expires
		if (typeof opts.eventTimeToLive !== "number") opts.eventTimeToLive = null;

		if (typeof opts.heartbeatTimeToLive !== "number") opts.heartbeatTimeToLive = null;

		if (typeof opts.queueOptions !== "object") opts.queueOptions = {};

		if (typeof opts.exchangeOptions !== "object") opts.exchangeOptions = {};

		if (typeof opts.messageOptions !== "object") opts.messageOptions = {};

		if (typeof opts.consumeOptions !== "object") opts.consumeOptions = {};

		// The default behavior is to delete the queues after they haven't had any
		// connected consumers for 2 minutes.
		const autoDeleteQueuesAfterDefault = 2 * 60 * 1000;

		opts.autoDeleteQueues =
			opts.autoDeleteQueues === true
				? autoDeleteQueuesAfterDefault
				: typeof opts.autoDeleteQueues === "number"
				? opts.autoDeleteQueues
				: opts.autoDeleteQueues === false
				? -1
				: autoDeleteQueuesAfterDefault;

		// Support for multiple URLs (clusters)
		opts.url = Array.isArray(opts.url)
			? opts.url
			: !opts.url
			? [""]
			: opts.url.split(";").filter(s => !!s);

		super(opts);

		this.hasBuiltInBalancer = true;
		this.connection = null;
		this.channel = null;
		this.bindings = [];

		this.channelDisconnecting = false;
		this.connectionDisconnecting = false;
		this.connectionCount = 0;
	}
Creates an instance of AmqpTransporter.

@param {any} opts

@memberof AmqpTransporter