import {FactoryProducer, Instantiable} from '../../../di' import {Maybe} from '../../../util' import {Queue} from './Queue' import {SyncQueue} from './SyncQueue' import {ConfiguredSingletonFactory} from '../../../di/factory/ConfiguredSingletonFactory' /** * Dependency container factory that matches the abstract Queue token, but * produces an instance of whatever Queue driver is configured in the `server.queue.driver` config. */ @FactoryProducer() export class QueueFactory extends ConfiguredSingletonFactory { protected getConfigKey(): string { return 'server.queue.driver' } protected getDefaultImplementation(): Instantiable { return SyncQueue } protected getAbstractImplementation(): any { return Queue } protected getDefaultImplementationWarning(): Maybe { return 'You are using the default synchronous queue driver. It is recommended you configure a background queue driver instead.' } }