Skip to content

devjoyvn/concurrency

Repository files navigation

Concurrency

Distributed method level concurrency lock NestJS module backed by Redis

Installation

Run npm/yarn install

npm install @devjoyvn/concurrency

Imports

import { ConcurrencyModule } from '@devjoyvn/concurrency';
import { Concurrency } from '@devjoyvn/concurrency';

Register Module

@Module({
  imports: [ConcurrencyModule.register('redis://localhost:6379')],
})
export class AppModule {}

Usage

Assume we need to apply concurrency for given method

@Concurrency({ key: 'test' })
public anyMethod(args) {
...
}

Key Generator

Pass a key generator function and anyMethod arguments will be passed into the generator function automatically

@Concurrency({ key: (args: any) => `key_${args.customer.id}` })

Set Auto Lock Release Timeout

By default lock gets released after 30 seconds. To set custom auto lock release timeout.

@Concurrency({ key: 'test', autoReleaseAfterSeconds: 40 })

*Note: Lock gets released automacally after either function execution or timeout of default 30 seconds.

Author

Devjoyvn (Github)

License

Licensed under the MIT License - see the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published