node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


svcs Build Status


This library aims to simplify building queue based services in nodejs using AMQP. It simplifies getting started and provides some out of the box monitoring / admin for these services.


Don't use it in production, early adopters and hackers are welcome, the API is still in a state of flux as we work on evolving some of the core features.


To build a new service we just create the service and pass in our handler(s).

var svcs = require('svcs');
var container = svcs();
// override the default amqpUrl 
var amqpUrl = process.env.AMQP_URL || config.amqp.url;
container.set('amqpUrl', amqpUrl);
function onErr(err) {
    console.warn('error processing message', err);
// add a route which will process messages for the given routing key 
// the attribute :gatewayId will be replaced with * when passed to bindQueue 
container.route('$', {queue: 'gw_events', errorHandler: onErr}, function handler(msg){
    var gatewayId = msg.params.gatewayId;


There are a couple of modules which can be added to the container.


This is a simple JSON decoder which will convert the payload of the incoming AMQP messages to JSON when the messages contentType is set to application/json.


Routing Statistics

This will send per routingKey statistics to a statsd server using the increment function.



  • Add locals to enable connection pools to be tied in and available to the msg, this probably should be done by a middleware module later.
  • Need to rework configuration and decide where the defaults should live.
  • Need to review jobs as the api is pretty average at the moment.
  • More testing..


Copyright (c) 2013 Mark Wolfe released under the MIT license.