@qrvey/queue
v0.0.3
Published
![install size](https://packagephobia.com/badge?p=@qrvey/queue) ![coverage](https://img.shields.io/badge/unit_test_coverage-0%25-brightgreen)
Downloads
467
Maintainers
Keywords
Readme
@qrvey/function-gateway
The @qrvey/queue
package provides a unified interface for work with AWS SQS and RabbitMQ based on the specific configurations of the service.
Installation
You can install the package using npm or yarn:
npm install @qrvey/queue
Or with yarn:
yarn add @qrvey/queue
Note: If the application does not have @aws-sdk/aws-sdk/client-sqs, @smithy/node-http-handler aand @smithy/middleware-retry it must be installed manually to work with AWS SQS and amqplib to work with RabbitMQ
Require environment variables
AWS_ACCOUNT_ID //AWS AccountId to send SQS service
AWS_DEFAULT_REGION //AWS Region for SQS service
RABBITMQ_HOST //RabbitMQ host
RABBITMQ_USER //RabbitMQ user
RABBITMQ_PASSWORD //RabbitMQ password
RABBITMQ_PORT //RabbitMQ port
PLATFORM_TYPE //Platform type (possible value CONTAINER)
Conditions for AWS SQS or RA
@qrvey/queue
package can deliver message either as a AWS SQS or as a RabbitMQ, depending on certain conditions. These conditions are determined by:
AWS SQS:
- If the environment variable
PLATFORM_TYPE
is not set or have a different value to'CONTAINER'
.
- If the environment variable
RabbitMQ:
- If the environment variable
PLATFORM_TYPE
is set to'CONTAINER'
.
- If the environment variable
Usage Example
const { QueueService } = require('@qrvey/queue');
const queueSchema={
name:'MY_SAMPLE_QUEUE', //name of the queue in SQS
alias:'MY_SAMPLE_QUEUE', //name of the queue for RabbitMQ
};
const queueMessage={
company: "Qrvey",
name: "Jhon Doe",
};
const options = {
headers: {
DelaySeconds: 3,
},
};
try{
const queueService = new QueueService();
await queueService.connect();
const res =await queueService.sendMessage(queueSchema, message, options);
await queueService.disconnect();
console.log("res: ", res);
}catch(error){
console.log(error);
}
API
Class
QueueService
Functions
connect(): Promise<any>
sendMessage(queue: string, message: object, options: IFunctionMapping, options: Options.Publish): Promise<any>
queue
: The name of the queue.message
: the body of the messages to be sent to the queue.options
: An object with additional configuration options.options.headers
: headers of the message- Returns: A promise that resolves with the result of the invoked function or rejects with an error if the invocation fails.
deleteMessage(queue: string, receiptHandle: string): Promise<any>
queue
: The name of the queue.receiptHandle
:
disconnect(): Promise<any>