@sphinx-software/queue

0.2.0 • Public • Published

@sphinx-software/queue

A queue for sphinx-fusion

  • support rabitmq using amqp
  • support sqs using aws-sdk
  • support redis-queue using rsmq
  • support database-queue using knex for Postgres, MSSQL, MySQL, MariaDB, SQLite3, and Oracle
  • support null-queue,memory-queue

implements Job

class Job {

    constructor(name) {
        this.name = name;
    }
    
    get flow() {
        // overwrite option flow default (no required)
        return {
            delay:1000,
            timeout:15000,
            retry:3,
            pushBack:true,
        }
    }

    handle() {
        // run task 
        console.log(`hello ${this.name}`);
    }
}

Provider Register

let serializer = await container.make('serializer');
serializer.forType(Job,
    (job) => job.name,
    (jobData) => new Job(jobData.name)
)

Controller

contructor(queueManager) {
    this.queueManager = queueManager;
}
static get dependencies() {
    return ['queueManager'];
}

use() {
    this.queueManager.to('myQueue').enqueue(new Job('word'));
}

Config options queue

queue {
    default: 'databaseQueue',
    queues : {
        rabbitMQ     : {
            url        : 'amqp://localhost',
            adapter    : 'amqp',
            channelName: 'someName',
            // flow default for queue if flow for job is not available            
            flow       : 'timeout:15000|delay:0|retry:3|rotateBack',
            // For more options see http://www.squaremobius.net/amqp.node/channel_api.html#channel_get
            options    : {
                send   : {
                    noAck: true
                },
                receive: {
                    noAck: true
                }
            }
        },
        redisMQ      : {
            host       : '127.0.0.1',
            flow       : 'timeout:15000|delay:900000|retry:3|pushBack',
            port       : 6379,
            adapter    : 'rsmq',
            channelName: 'someName2'
        },
        SQS          : {
            flow           : 'timeout:15000|delay:30000|retry:3|rotateBack',
            adapter        : 'sqs',
            queueUrl       : 'queueURL',
            accessKeyId    : 'accessKeyId',
            secretAccessKey: 'secretAccessKey',
            region         : 'us-east-1'
        },
        databaseQueue: {
            flow   : 'timeout:15000|delay:30000|retry:3|rotateBack',
            adapter: 'database'
        }
    }
};

Licences

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @sphinx-software/queue

Weekly Downloads

1

Version

0.2.0

License

MIT

Last publish

Collaborators

  • rikky2512