Example #1
0
    (function () {
        var sails;
        try {
            sails = require('sails');
        } catch (e) {
            console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.');
            console.error('To do that, run `npm install sails`');
            console.error('');
            console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.');
            console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,');
            console.error('but if it doesn\'t, the app will run with the global sails instead!');
            return;
        }


        // Try to get `rc` dependency
        var rc;
        try {
            rc = require('rc');
        } catch (e0) {
            try {
                rc = require('sails/node_modules/rc');
            } catch (e1) {
                console.error('Could not find dependency: `rc`.');
                console.error('Your `.sailsrc` file(s) will be ignored.');
                console.error('To resolve this, run:');
                console.error('npm install rc --save');
                rc = function () {
                    return {};
                };
            }
        }


        sails.load({
            paths: {
                models: localDir + conf.directory.models
            },
            log: {level: 'silly'},
            hooks: {
                blueprints: false,
                controllers: false,
                cors: false,
                csrf: false,
                grunt: false,
                //http: false,
                i18n: false,
                logger: false,
                policies: false,
                pubsub: false,
                //pubsub: require('pubsub-emitter'),
                request: false,
                responses: false,
                session: false,
                sockets: false,
                views: false
            }
        }, function (err, app) {

            sails.log.info("Starting kue");
            var kue_engine = sails.config.kue;

            //register kue.
            sails.log.info("Registering jobs ", localDir + conf.directory.jobs);

            //console.log('producers', options);

            //process .........
            var jobs = require('include-all')({
                dirname: localDir + conf.directory.jobs,
                filter: /(.+)\.js$/,
                excludeDirs: /^\.(git|svn)$/,
                optional: true
            });

            sails.log.info("jobs list ", jobs);

            _.forEach(jobs, function (job, name) {
                //console.log('job==>', job, 'name==>', name);
                sails.log.info("Registering kue handler: " + name);
                //todo to improve concurrency we should get value from job config

                var concurrency = _getConcurrency('concurrency', 2);
                kue_engine.process(name, concurrency, job);


                //local function
                function _getConcurrency(params, def) {
                    try {
                        var producer = options[name] || {};
                        //default concurrency
                        var concurrency = producer[params] || def;
                    }
                    catch (e) {
                        sails.log.error('error in consumer.ts', e)
                    }
                    return concurrency;
                };


            });
            //process kue ....

            /* kue_engine.on('job complete', function (id) {
             sails.log.info("Removing completed job: " + id + ' ' + new Date());
             kue.Job.get(id, function (err, job) {
             if (err) {
             console.log(err)
             }
             if (job) job.remove();
             });
             });*/


            process.once('SIGTERM', function (sig) {
                kue_engine.shutdown(function (err) {
                    console.log('Kue is shut down.', err || '');
                    process.exit(0);
                }, 5000);
            });

        });
    })();
Example #2
0
    (function () {
        var sails;
        try {
            sails = require('sails');
        } catch (e) {
            console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.');
            console.error('To do that, run `npm install sails`');
            console.error('');
            console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.');
            console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,');
            console.error('but if it doesn\'t, the app will run with the global sails instead!');
            return;
        }


        // Try to get `rc` dependency
        var rc;
        try {
            rc = require('rc');
        } catch (e0) {
            try {
                rc = require('sails/node_modules/rc');
            } catch (e1) {
                console.error('Could not find dependency: `rc`.');
                console.error('Your `.sailsrc` file(s) will be ignored.');
                console.error('To resolve this, run:');
                console.error('npm install rc --save');
                rc = function () {
                    return {};
                };
            }
        }

        if (__dirname.indexOf('node_modules') == -1) {
            localDir = __dirname + path.sep + '..' + path.sep
        } else {
            localDir = __dirname + path.sep + '..' + path.sep + '..' + path.sep
        }

        sails.load({
            paths: {
                models: localDir + conf.directory.models
            },
            log: {level: 'silly'},
            hooks: {
                blueprints: false,
                controllers: false,
                cors: false,
                csrf: false,
                grunt: false,
                //http: false,
                i18n: false,
                logger: false,
                policies: false,
                pubsub: false,
                //pubsub: require('pubsub-emitter'),
                request: false,
                responses: false,
                session: false,
                sockets: false,
                views: false
            }
        }, function (err, app) {

            sails.log.info("Starting kue for producers");
            var kue_engine = sails.config.kue;

            //register kue.
            sails.log.info("Registering jobs ", localDir + conf.directory.producers);


            //add producers en kue.........
            var producers = require('include-all')({
                dirname: localDir + conf.directory.producers,
                filter: /(.+)\.js$/,
                excludeDirs: /^\.(git|svn)$/,
                optional: true
            });

            //sails.log.info("producers list ", producers);

            var sendProducerToKue = function (options, name) {
                kueHelper
                    .produce(kue_engine, options)
                    .then(function () {
                        //console.log(name + ' produce done')
                    });
                //sails.log.info("Registering kue producer: " + name);
            };
            _.forEach(producers, function (options, name) {
                //console.log('function producer==>', options);
                if (!options.name) options.name = name;

                //todo to test
                if (options.cron) new CronJob(options.cron, function () {
                    sendProducerToKue(options, name);
                }, null, true, 'America/Los_Angeles');

                if (options.sendProducerAtStartup != false) sendProducerToKue(options, name)


            });

            //producers kue ....

            kue_engine.on('job complete', function (id) {
                kue.Job.get(id, function (err, job) {
                    if (err) {
                        console.log(err)
                    }
                    if (job) {
                        sails.log.info(new Date(), " Removing completed job: ", job.type, job.data,job.id);
                        job.remove();
                    }
                });
            });


            // Resolve stuck jobs
            kueHelper.resolveStuckjob(kue_engine);
            kueHelper.resolveFailedjob(kue_engine);


            /*   kueHelper.removeAll('Getinfofromurl', kue, 'inactive');
             kueHelper.removeAll('Getinfofromurl', kue, 'complete');
             kueHelper.removeAll('Getinfofromurl', kue, 'active');
             kueHelper.removeAll('findwebsite', kue, 'inactive');
             kueHelper.removeAll('findwebsite', kue, 'active');
             kueHelper.removeAll('Findwebsite', kue, 'inactive');
             kueHelper.removeAll('Findwebsite', kue, 'active');
             kueHelper.removeAll('Findwebsite', kue, 'inactive');
             kueHelper.removeAll('Findwebsite', kue, 'complete');
             kueHelper.removeAll('findwebsite', kue, 'complete');


             */

            /*  kueHelper.removeAll('Users', kue, 'active');
             kueHelper.removeAll('Users', kue, 'inactive');
             kueHelper.removeAll('Users', kue, 'complete');
             kueHelper.removeAll('User', kue, 'active');
             kueHelper.removeAll('User', kue, 'inactive');
             kueHelper.removeAll('User', kue, 'complete');*/


            /* kueHelper.removeAll('Users2', kue, 'active');
             kueHelper.removeAll('Users2', kue, 'inactive');
             kueHelper.removeAll('Users2', kue, 'complete');*/

            /*    kueHelper.removeAll('Findwebsite2', kue, 'active');
             kueHelper.removeAll('Findwebsite2', kue, 'inactive');
             kueHelper.removeAll('Findwebsite2', kue, 'complete');
             */

            /*    kueHelper.removeAll('Findwebsite3', kue, 'active');
             kueHelper.removeAll('Findwebsite3', kue, 'inactive');
             kueHelper.removeAll('Findwebsite3', kue, 'complete');*/


            process.once('SIGTERM', function (sig) {
                kue_engine.shutdown(function (err) {
                    console.log('Kue is shut down.', err || '');
                    process.exit(0);
                }, 5000);
            });

        });
    })();
Example #3
0
    (function () {
        var sails;
        try {
            sails = require('sails');
        } catch (e) {
            console.error('To run an app using `node app.js`, you usually need to have a version of `sails` installed in the same directory as your app.');
            console.error('To do that, run `npm install sails`');
            console.error('');
            console.error('Alternatively, if you have sails installed globally (i.e. you did `npm install -g sails`), you can use `sails lift`.');
            console.error('When you run `sails lift`, your app will still use a local `./node_modules/sails` dependency if it exists,');
            console.error('but if it doesn\'t, the app will run with the global sails instead!');
            return;
        }


        // Try to get `rc` dependency
        var rc;
        try {
            rc = require('rc');
        } catch (e0) {
            try {
                rc = require('sails/node_modules/rc');
            } catch (e1) {
                console.error('Could not find dependency: `rc`.');
                console.error('Your `.sailsrc` file(s) will be ignored.');
                console.error('To resolve this, run:');
                console.error('npm install rc --save');
                rc = function () {
                    return {};
                };
            }
        }

        if (__dirname.indexOf('node_modules') == -1) {
            localDir = __dirname + path.sep + '..' + path.sep
        } else {
            localDir = __dirname + path.sep + '..' + path.sep + '..' + path.sep
        }

        sails.load({
            paths: {
                models: localDir + conf.directory.models
            },
            log: {level: 'silly'},
            hooks: {
                blueprints: false,
                controllers: false,
                cors: false,
                csrf: false,
                grunt: false,
                //http: false,
                i18n: false,
                logger: false,
                policies: false,
                pubsub: false,
                //pubsub: require('pubsub-emitter'),
                request: false,
                responses: false,
                session: false,
                sockets: false,
                views: false
            }
        }, function (err, app) {

            sails.log.info("Kue remove");
            var kue_engine = sails.config.kue;

            //register kue.


            /*   kueHelper.removeAll('Getinfofromurl', kue, 'inactive');
             kueHelper.removeAll('Getinfofromurl', kue, 'complete');
             kueHelper.removeAll('Getinfofromurl', kue, 'active');
             kueHelper.removeAll('findwebsite', kue, 'inactive');
             kueHelper.removeAll('findwebsite', kue, 'active');
             kueHelper.removeAll('Findwebsite', kue, 'inactive');
             kueHelper.removeAll('Findwebsite', kue, 'active');
             kueHelper.removeAll('Findwebsite', kue, 'inactive');
             kueHelper.removeAll('Findwebsite', kue, 'complete');
             kueHelper.removeAll('findwebsite', kue, 'complete');


             */

            /*  kueHelper.removeAll('Users', kue, 'active');
             kueHelper.removeAll('Users', kue, 'inactive');
             kueHelper.removeAll('Users', kue, 'complete');
             kueHelper.removeAll('User', kue, 'active');
             kueHelper.removeAll('User', kue, 'inactive');
             kueHelper.removeAll('User', kue, 'complete');*/


            /* kueHelper.removeAll('Users2', kue, 'active');
             kueHelper.removeAll('Users2', kue, 'inactive');
             kueHelper.removeAll('Users2', kue, 'complete');*/

            /*    kueHelper.removeAll('Findwebsite2', kue, 'active');
             kueHelper.removeAll('Findwebsite2', kue, 'inactive');
             kueHelper.removeAll('Findwebsite2', kue, 'complete');
             */

            _.forEach(options, function (option) {
                kueHelper.removeAll(option.kueName, kue, 'active');
                kueHelper.removeAll(option.kueName, kue, 'inactive');
                kueHelper.removeAll(option.kueName, kue, 'complete');
                kueHelper.removeAll(option.kueName, kue, 'failed');
            })


        });
    })();