NestJS Integration
Inject a FlexiQService into your Nest providers.
Inject a FlexiQService into your Nest providers.
Peer dependencies: @nestjs/common + reflect-metadata. Import from the
@byteveda/flexiq/contrib/nest subpath.
import { Module } from "@nestjs/common";
import { FlexiQModule } from "@byteveda/flexiq/contrib/nest";
@Module({
imports: [FlexiQModule.forRoot(queue)],
})
export class AppModule {}FlexiQModule.forRoot(queue) returns a DynamicModule that exports
FlexiQService to any module that imports it.
FlexiQServiceimport { Injectable } from "@nestjs/common";
import { FlexiQService } from "@byteveda/flexiq/contrib/nest";
@Injectable()
export class ReportService {
constructor(private readonly tasks: FlexiQService) {}
scheduleReport(reportId: string): string {
return this.tasks.enqueue("generateReport", [reportId], {
maxRetries: 2,
timeoutMs: 60_000,
});
}
async health() {
return this.tasks.stats(); // Promise<Stats>
}
}FlexiQService methods| Method | Description |
|---|---|
enqueue(task, args?, options?) | Enqueue a job, returns the job ID. |
result(id, options?) | Wait for a result. |
getJob(id) | Fetch job details by ID. |
stats() | Overall queue statistics. Returns a Promise. |
requestCancel(id) | Request cancellation of a running job. |
deadLetters(limit?, offset?) | List dead-lettered jobs. Returns a Promise. |
queue | The raw Queue instance for the full API surface. |
FlexiQService wraps the most common operations. For anything not listed —
workflows, distributed locks, metrics — access tasks.queue directly.