svcs
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.
Status
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.
API
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('$gw.:gatewayId.events', {queue: 'gw_events', errorHandler: onErr}, function handler(msg){
var gatewayId = msg.params.gatewayId;
});
Middleware
There are a couple of modules which can be added to the container.
JSON
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
.
container.use(svcs.json());
Routing Statistics
This will send per routingKey
statistics to a statsd server using the increment
function.
container.use(svcs.stats());
TODO
- 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..
License
Copyright (c) 2013 Mark Wolfe released under the MIT license.