service-geoip
Version:
A RabbitMQ microservice wrapping the node-geoip package (geoip-lite on npm).
76 lines (60 loc) • 1.99 kB
Markdown
# node-service-geoip
a RabbitMQ microservice wrapping the [node-geoip package](https://github.com/bluesmoon/node-geoip) (geoip-lite on npm).
[](https://codeship.com/projects/118381)
[](https://www.codacy.com/app/dialonce/node-service-geoip)
[](https://www.codacy.com/app/dialonce/node-service-geoip)
# project status
#### Done
- Used in production
- Dockerized
- Deployable via Tutum
- Uses BunnyMQ
## service install
```npm install service-geoip```
```npm updatedb``` used to build the geo DB. This is not needed when module is used as a client.
## docker build
```docker build .```
## configuration
configuration can be done using env vars
```sh
#default
AMQP_URL=amqp://localhost
#default
AMQP_QUEUE=geo:ip
```
## usage
### start the service
setup env vars and start the container or run npm start
```
npm start
```
### consume the service
```sh
npm i bunnymq --save
```
Then in your code:
```js
var bunny = require('bunnymq')(/*config here or use bunnymq's env vars*/).producer;
bunny.produce('geo:ip', '95.130.11.91', { rpc: true })
.then(function(loc){
//use loc object here
});
```
### consuming from a compatible amqp broker
just send the IP as the message content on the queue you have defined (see #configuration) with contentType set to ``application/json``
# Tutum
Here is a sample stackfile to deploy your microservice (create your tutum repository from the github repo first)
```yml
rabbitmq-master:
image: 'tutum/rabbitmq:latest'
environment:
- RABBITMQ_PASS=PASSWORD
service-geoip:
image: 'tutum.co/TUTUM_USER/service-geoip:latest'
environment:
- 'AMQP_URL=amqp://admin:PASSWORD@rabbitmq-master'
links:
- rabbitmq-master
ports:
- '9001:8080'
```