2.0.7 • Published 3 years ago

@pickk/nest-sqs v2.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

@pickk/nest-sqs

@pickk/nest-sqs is forked version of @ssut/nestjs-sqs

This library internally uses bbc/sqs-producer and bbc/sqs-consumer, and implements some more useful features on top of the basic functionality given by them. this library is only for Amazon SQS.

Installation

$ npm i --save @pickk/nest-sqs

Quick Start

Register module

For use @pickk/nest-sqs You have to perform two methods to register a module. First you have to register Amazon SQS config options.

@Module({
  imports: [
    SqsModule.forRootAsync({
      imports:[ConfigModule],
      useFactory:(configService)=>{
        // return SQS.Types.ClientConfiguration & accountNumber(string type)
        return {...}
      },
      injects:[ConfigSerivce]
    }),
  ],
})
class AppModule {}

Second you have to register queues.

SqsModule.registerQueues([
  {
    name: 'queueName',
    type: 'ALL' // 'ALL'|'CONSUMER'|'PRODUCER'
    consumerOptions?: {},
    producerOptions?: {}
  },
  ...
]);

Decorate methods

You need to decorate methods in your NestJS providers in order to have them be automatically attached as event handlers for incoming SQS messages:

@SqsProcess(/** name: */'queueName)
export class AppMessageHandler {
  @SqsMessageHandler(/** batch: */ false)
  public async handleMessage(message: AWS.SQS.Message) {}

  @SqsConsumerEventHandler(/** eventName: */ SqsConsumerEvent.PROCESSING_ERROR)
  public onProcessingError(error: Error, message: AWS.SQS.Message) {
    // report errors here
  }
}

One class can only handle one queue. so if you want to enroll dead letter queue, you have to make new class that handle dead letter queue

Produce messages

export class AppService {
  public constructor(
    private readonly sqsService: SqsService,
  ) { }

  public async dispatchSomething() {
    await this.sqsService.send(/** name: */ 'queueName', {
      id: 'id',
      body: { ... },
      groupId: 'groupId',
      deduplicationId: 'deduplicationId',
      messageAttributes: { ... },
      delaySeconds: 0,
    });
  }
}

Configuration

See here, and note that we have same configuration as bbc/sqs-consumer's. In most time you just need to specify both name and queueUrl at the minimum requirements.

License

This project is licensed under the terms of the MIT license.

2.0.7

3 years ago

2.0.6

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago