tyo-mq
Version:
Distributed Message Pub/Sub Service with socket.io
52 lines (39 loc) • 1.37 kB
JavaScript
/**
* Storage backend factory for durable queues.
*/
;
const MemoryStore = require('./memory');
function createStore(options) {
options = options || {};
var storage = options.storage || options.store || 'memory';
var storageOptions = options.storage_options || options.storageOptions || {};
if (storage && typeof storage.enqueue === 'function'
&& typeof storage.dequeue === 'function'
&& typeof storage.ack === 'function')
return storage;
if (storage === 'memory' || storage === true)
return new MemoryStore(storageOptions);
if (storage === 'sqlite') {
const SQLiteStore = require('./sqlite');
return new SQLiteStore(storageOptions);
}
if (storage === 'redis') {
const RedisStore = require('./redis');
return new RedisStore(storageOptions);
}
if (typeof storage === 'function')
return storage(storageOptions);
throw new Error('Unsupported storage backend: ' + storage);
}
module.exports = {
MemoryStore: MemoryStore,
createStore: createStore
};
Object.defineProperty(module.exports, 'RedisStore', {
enumerable: true,
get: function () { return require('./redis'); }
});
Object.defineProperty(module.exports, 'SQLiteStore', {
enumerable: true,
get: function () { return require('./sqlite'); }
});