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).
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
npm i @lumston/sqs-sns-broker
or
yarn add @lumston/sqs-sns-broker
//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;
},
}),
]
})
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'],
});
}
}
- NESTJS - Framework
- jsalazar@lumston.com - Idea y trabajo inicial
- otorres@lumston.com - Idea e implementación
- olizarraga@lumston.com - Idea e implementación