UNPKG

event-message-broker

Version:

A Message Bus that uses AWS Stack and RabbitMQ

81 lines (60 loc) 2.53 kB
# Message Bus SDK for AWS Resources [![NPM version](https://img.shields.io/npm/v/aws-message-bus-package.svg)](https://www.npmjs.com/package/aws-message-bus-package) ## Table of Contents * [Getting Started](#getting-Started) * [API](#api) ## Getting Started **1. Install** ```shell npm install aws-message-bus-package ``` **2. Config File** You need to create a config.json file in your root/src project and input some AWS informations, like bellow: ```json { "host": "localhost", "port": 4566, "region": "eu-west-2", "account": "000000000000", "snsArn": "arn:aws:sns", "sqsArn": "arn:aws:sqs", "awsHost": "localhost.localstack.cloud", "tags": [ { "Key": "team", "Value": "your-team-name" }, { "Key": "appName", "Value": "your-app-name" } ], "testMode": false } ``` **3. Sample Usage** ```javascript const { Infrastructure } = require('aws-message-bus-package'); async () => await Infrastructure.createQueue('your-queue-name'); async () => await Infrastructure.createTopic('your-topic-name'); async () => await Infrastructure.bindTopic('your-topic-name', 'your-queue-name'); ``` ## API ### `Infrastructure.createQueue('queue-name')` Create a new SQS queue ### `Infrastructure.bindTopic('topic-name', 'queue-name')` * Create a new SNS topic, if not exists * Subscribe a SNS topic in a SQS queue ### `Service.publishMessage('topic-name', {CONTENT})` Send a message to SNS topic to do broadcast * Content: any kind of type/object, this will be transformed into a JSON format ### `Service.sendMessage('queue-name', {CONTENT}, {PARAMS})` Send a message to SQS queue direct * Content: any kind of type/object, this will be transformed into a JSON format * Params: [SQS.Types.SendMessageRequest](https://github.com/aws/aws-sdk-js/blob/7bcd9ab0d0b623ac99730a051a9758068910e9b3/clients/sqs.d.ts#L751) * **You don't need to inform:** * MessageBody * MessageAttributes * QueueUrl ### `Service.scheduleMessage('topic-name', {CONTENT}, [SCHEDULED_DATE])` Send a message to EventBridge informing the SNS topic with the destination. This message will be consumed when it arrives on the scheduled date. * Content: any kind of type/object, this will be transformed into a JSON format ### `Service.handleConsumerMessage('queue-name', {RESILIENCE_PARAMS})` Handle a consumer to consume queue messages * Resilience Params: * maxRetryCount: max number of attempts until send to DLQ * delaySeconds: the time that will wait between attempts