@pickk/nest-sqs
TypeScript icon, indicating that this package has built-in type declarations

2.0.7 • Public • Published

@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.

Readme

Keywords

none

Package Sidebar

Install

npm i @pickk/nest-sqs

Weekly Downloads

1

Version

2.0.7

License

MIT

Unpacked Size

25.6 kB

Total Files

20

Last publish

Collaborators

  • s_young125
  • yamkee
  • greatsumini