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 only need edit the `aws-config.json` adding your own keys:
```
    {
        "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 OffSqs = require('off-sqs-debearloper');
var offSqs = new OffSqs();

## 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);
```



