1.0.3 • Published 5 years ago

nest-queue v1.0.3

Weekly downloads
16
License
MIT
Repository
github
Last release
5 years ago

Queue manager for NestJS applications

Easy for use and installation into you'r projects.

yarn add nest-queue

Make sure you have installed redis on your host. For local development you can easily install it using docker.

For better working you need to use nest package with `6..` ver.

How to

1) Add new module in your app.module.ts file:

*This module (QueueModule) marked as global.*

```typescript
import { Module } from '@nestjs/common';
import { QueueModule } from 'nest-queue';

@Module({
    imports: [
        QueueModule.forRoot({}),
    ]
})
export class AppModule {}
```

For first parameter `forRoot` function accept options for current module.
Settings very simply and have this structure:

```typescript
export interface QueueModuleOptions {
   name?: string,
   connection?: Bull.QueueOptions,
}
```

For connection settings you can take help from [Bull documentation](https://optimalbits.github.io/bull/).
By default connection setting is:
```
connection: {
    redis: {
        port: 6379,
    }
}
```

It means we will work with `localhost:6379` host.

2) Add queue and handle events

For add job to queue u need inject a Queue instance into your service or controller.
For example:

```typescript
import { Controller, Get } from '@nestjs/common'
import { Queue } from 'bull';
import { QueueInjection } from 'nest-queue';

@Controller('test')
class TestController {
   constructor(
       @QueueInjection() private readonly queue: Queue,
   ) {}

   @Get('/')
   index() {
       this.queue.add('testEvent', { data: 1, somedata: 2 });
   }
}
```

In this case you can manipulate with job adding. You can add delayed call and etc.
Information about it you can take from [Bull documentation](https://optimalbits.github.io/bull/).

Anywhere (controllers, services) in your project you can provide event handler for redis calls.
`@EventConsumer(eventName)` method decorator allows you to work with it. For example:

```typescript
import { Job, DoneCallback } from 'bull';
import { EventConsumer } from 'nest-queue';

class TestService {
    @EventConsumer('testEvent')
    eventHandler(job: Job, done: DoneCallback) {
       // job.data has passed data from queue adding
       done(); // required call to stop job
    }
}
```

*Context (this) in this function equals to TestService prototype with all resolved dependencies*

Function that will provide as event handler receive two arguments `Job` and `DoneCallback`.
This function calls as bull-processors and you can take help about from bull [Bull documentation](https://optimalbits.github.io/bull/).

Future Goals

  • Add tests;
  • Async module adding;
  • Workaround with bull and provide once module for manipulating with jobs;
  • Add console commands lika a queue list and etc for receiving information about all processing jobs and allow to restart failed jobs (like a Laravel artisan queue manager).

Contributors