Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pagarme/sqs-quooler
A complete queue consumer for SQS
https://github.com/pagarme/sqs-quooler
aws consumer sqs
Last synced: about 1 month ago
JSON representation
A complete queue consumer for SQS
- Host: GitHub
- URL: https://github.com/pagarme/sqs-quooler
- Owner: pagarme
- License: mit
- Created: 2016-11-23T16:29:10.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-10-10T09:06:41.000Z (about 1 year ago)
- Last Synced: 2024-05-07T06:45:14.712Z (8 months ago)
- Topics: aws, consumer, sqs
- Language: JavaScript
- Homepage:
- Size: 392 KB
- Stars: 21
- Watchers: 78
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQS Quooler
[![Build Status](https://travis-ci.org/pagarme/sqs-quooler.svg?branch=master)](https://travis-ci.org/pagarme/sqs-quooler)
[![npm](https://img.shields.io/npm/dm/sqs-quooler.svg)](https://npmjs.com/package/sqs-quooler):walking::walking::walking::walking: An abstraction of Amazon's SQS SDK. It provides an easier to use interface than that of [Amazon's SDK](https://www.npmjs.com/package/aws-sdk).
## Installation
`npm install --save sqs-quooler`## Usage
### Connecting to the queue
>Note `aws-sdk` still needs to be imported. SQS Quooler is just a wrapper.```javascript
const { SQS, Credentials } = require('aws-sdk')
const { Queue } = require('sqs-quooler')const sqs = new SQS({
region: 'your aws region',
endpoint: 'your aws endpoint',
// Credentials can be used with YOPA as below
// credentials: new Credentials({
// accessKeyId: 'x',
// secretAccessKey: 'x',
// }),
})const myQueue = new Queue({
sqs,
endpoint: 'your aws endpoint + queue name',
concurrency: 1, // MaxNumberOfMessages
})
```
### Pushing items to the queue
>`myQueue.push` (data: any) : PromiseData sent via `.push` will be stringified before it's sent to SQS.
```javascript
myQueue.push({
data: 'test',
})
```
### Removing items from the queue
>`myQueue.remove` (message: object) : PromiseMessage object should have a `ReceiptHandle` property, to identify the message.
```javascript
myQueue.remove({
...
ReceiptHandle: 'receipt handle',
...
})
```
### Changing message visibility
>`myQueue.changeMessageVisibility` (parameters: object) : PromiseParameters object should have a `ReceiptHandle` property, to identify the message, and a `VisibilityTimeout` property to determine in how many seconds the item will return to the queue.
```javascript
myQueue.changeMessageVisibility({
...
ReceiptHandle: 'receipt handle',
VisibilityTimeout: 0, // returns immediately to the queue
...
})
```
### Retrieving items from the queue
>`myQueue.startProcessing` (handler: function, options: object) : PromiseHandler function should accept 2 arguments, the first one being the parsed message `Body` value, and the second one being the whole message object. It will be called once for every message found in the queue (depending on the queue's `concurrency`).
The options object is optional and accept the following properties:
- `keepMessages` (boolean): To avoid deleting the message after processing it. Default is `false`.
- `messageAttributesNames` (string array): The value which will be sent to the `receiveMessage` SQS method at the `MessageAttributeNames` property. Default value is `['All']`.
- `attributeNames` (string array): A list of attributes that need to be returned along with each message, within the `Attributes` property. Default value is `['All']`.After the handler returns (if it returns a Promise, SQS Quooler will wait for it to resolve), the item is automatically deleted from the queue. If your handler throws an error, or returns a rejected Promise, the item will not be removed from the queue.
```javascript
myQueue.startProcessing((body, message) => {
// body: {
// data: 'test',
// }// message: {
// Body: '{"data":"test"}',
// ReceiptHandle: 'receipt handle',
// MessageAttributes: {
// custom_attribute: {
// StringValue: 'custom_attribute value',
// StringListValues: [],
// BinaryListValues: [],
// DataType: 'String'
// }
// }
// ...
// }
})
```
### Stop processing the queue
>`myQueue.stopProcessing` () : Promise```javascript
myQueue.stopProcessing()
```### Purge the queue
>`myQueue.purge` () : PromiseDeletes all messages in a queue
```javascript
myQueue.purge()
```## License
>You can check out the full license [here](https://github.com/pagarme/sqs-quooler/blob/master/LICENSE)This project is licensed under the terms of the **MIT** license.