@lumston/sqs-sns-broker
TypeScript icon, indicating that this package has built-in type declarations

0.14.3 • Public • Published

Project logo

Lumston aws sns-sqs broker implementation

Table of Contents

About

Welcome to the specialized AWS SNS/SQS integration library for NestJS, designed to enhance message handling efficiency in microservices environments. This library, crafted with the NestJS ecosystem in mind, provides an additional layer of control for implementing Amazon Web Services (AWS) Simple Notification Service (SNS) and Simple Queue Service (SQS).

Connection Managment

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Installing

npm i @lumston/sqs-sns-broker

or

yarn add @lumston/sqs-sns-broker

Usage

//app.module.ts
import {BrokerModule} from '@lumston/sqs-sns-broker';

@Module({
  imports:[
    BrokerModule.forRoot({
      isGlobal: true,
      aws: {
        region: 'us-east-1',
        credentials: fromEnv(),
      },
    })
  ]
})

or

//app.module.ts
import {BrokerModule, IBrokerConnectionOptions} from '@lumston/sqs-sns-broker';

@Module({
  imports:[
    BrokerModule.forRootAsync({
      inject: [ConfigService],
      useFactory: async (configService: ConfigService) => {
        const local = configService.get<ILocal>(NAMESPACES.LOCAL);
        const connection: IBrokerConnectionOptions = {
          aws: {
            region: local.aws_default_region,
            credentials: fromEnv(),
          },
        };
        return connection;
      },
    }),
  ]
})

Sending Messages to topic

The module exports the service SNSService, which provides us with the function called publish This function allows us to send messages to the selected topic.

export enum PUBLISH_ACTIONS {
  UPDATE,
  DELETE,
  CREATE,
  GET,
}
interface IPublish<T> {
  //** Metadata about source of message **//
  Source: string;
  //** Action to perfom by message reciver **//
  Action: keyof typeof PUBLISH_ACTIONS | string;
  //** Message to send **// 
  Message: T;
  //** The topic arn**/
  TopicArn: string;
  //** Metadatada about object information **//
  UpdatedAttributes: string;
}
import { SNSService } from '@lumston/sqs-sns-broker';

class MyPublisherService{
  constructor(private snsService: SNSService){}

  sendMessage(){

    await this.snsService.publish({
              Source: "USERS",
              Action: 'CREATE',
              Message: {
                name: 'Jhon Doe',
                age: 18,
              },
              TopicArn: 'arn:aws:sns:us-east-1:123456789012:MyTopic',
              UpdatedAttributes: ['name','age'],
            });
  }
}

⛏️ Construido usando

✍️ Autores

Readme

Keywords

none

Package Sidebar

Install

npm i @lumston/sqs-sns-broker

Weekly Downloads

226

Version

0.14.3

License

MIT

Unpacked Size

183 kB

Total Files

40

Last publish

Collaborators

  • jsalazar-dev
  • adominguezls
  • otorres
  • alex_torres