strong-mq

clustering of applications on top of message queues

strong-mq: Clustering of Applications on Top of Message Queues

strong-mq is an abstraction layer over common message distribution patterns, and several different message queue implementations, including cluster-native messaging.

It allows applications to be written against a single message queue style API, and then deployed either singly, or as a cluster, with deploy-time configuration of the messaging provider. Providers include native node clustering, allowing no-dependency deployment during test and development. Support for other providers is on-going, and 3rd parties will be able to add pluggable support for new message queue platforms.

% npm install strong-mq
% npm test

If you get an assert during require of strong-mq about multiple versions being initialized, then some of the modules you are depending on use strong-mq, but do not specify it as a peerDependency. See strongloop/strong-cluster-connect-store as an example of how to correctly specify a dependency on strong-mq in a module. An application can depend on strong-mq with a normal dependency.

An example of connecting to a server and listening on a work queue:

var connection = require('strong-mq')
    .create('amqp://localhost')
    .open();
 
var push = connection.createPushQueue('todo-items');
push.publish({job: 'clean pool'});
 
var pull = connection.createPullQueue('todo-items');
pull.subscribe(function(msg) {
    console.log('TODO:', msg);
    connection.close();
});