service-geoip

A RabbitMQ microservice wrapping the node-geoip package (geoip-lite on npm).

Usage no npm install needed!

<script type="module">
  import serviceGeoip from 'https://cdn.skypack.dev/service-geoip';
</script>

README

node-service-geoip

a RabbitMQ microservice wrapping the node-geoip package (geoip-lite on npm).

Codeship Codacy Badge Codacy Badge

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

#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

npm i bunnymq --save

Then in your code:

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)

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'