nibi
Version:
Extremely easy management of queues with RabbitMQ and/or AmazonSQS
110 lines (84 loc) • 2.85 kB
Markdown
OFF-SQS: Manage Amazon SQS and RabbitMQ on node.js
===================
This easy manager provides the basic functionality to use [**Amazon SQS**](https://aws.amazon.com/sqs/ "SQS Amazon") in production enviroment and [**RabbitMQ**](https://www.rabbitmq.com/) in development enviroment.
To start using it just **clone it** or install it via **npm** `npm install off-sqs-debearloper`.
## Amazon SQS settings
You need to add yours AWS keys in a JSON file, something like this:
```
{
"accessKeyId": "STRING",
"secretAccessKey": "STRING",
"region": "STRING"
}
```
> **Note:** that every operation checks first if the Queue exists, if not it'll create it.**
## RabbitMQ settings
To work with RabbitMQ, you need to [**install the Server**](https://www.rabbitmq.com/install-homebrew.html).
We recommend you to do it with [**homebrew**](http://brew.sh/), so you dont have to set up the server manually when you are in the development environment.
Before installing make sure you have the latest brews:
brew update
Then, install RabbitMQ server with:
```
brew install rabbitmq
```
## Enviroments
`development` is the enviroment by default.
If you want to use `production` or `qa` execute your node app in this way:
NODE_ENV=production node yourApp.js
//or
NODE_ENV=qa node yourApp.js
# Methods
## Import and declare
```
var Nibi = require('nibi');
var nibi = new Nibi();
```
## Configure
- **Params:** an object with the configure params.
- **Returns:** nothing.
if you want to use AmazonSQS with this modul, you need make this
```
//require your own aws json file
var myAwsConfigFile = require('./myAwsConfigFile');
nibi.configure({
awsConfigFile: myAwsConfigFile
});
```
## Sender()
- **Params:** the name of the SQS queue and the data you want to send.
- **Returns:** nothing.
**Usage:**
```
offSqs.sender('myQueueName', ["foo": "bar"]);
```
##Receiver()
- **Params:** the name of the SQS queue.
- **Return:** A promise which will become a tuple of `receiver` a function and `queueUrl` a string.
**Usage**:
```
offSqs.receiver('myQueue', yourDataManager);
```
> **Note:** Where `yourDataManager` is a function that receives every message on the queue, so you can easyly customize your data miner. Something like: `myMiner(messageOfTheQueue);``
###Example
```
var printData = function(data){
console.log(data)
}
offSqs.receiver("queueName", printData)
```
##getQueueUrl()
- **Params:** The name of the SQS Queue.
- **Returns:** A promise, which will become the url of the Queue.
**Usage:**
```
offSqs.getQueueUrl('myQueue').then(function('myQueueURL'){
return myQueueURL;
});
```
##parseMessage()
- **Params:** Data received by SQS Queues.
- **Returns:** The cleaned data of the `body` as array.
**Usage:**
```
offSqs.parseMessage(data);
```