UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

81 lines (70 loc) 2.96 kB
// tslint:disable:no-console import { chevre } from '../../../lib/index'; import * as mongoose from 'mongoose'; import * as redis from 'redis'; export async function executeTaskIfExists() { const redisClient = redis.createClient<redis.RedisDefaultModules, Record<string, never>, Record<string, never>>({ socket: { port: Number(<string>process.env.REDIS_PORT), host: <string>process.env.REDIS_HOST }, password: <string>process.env.REDIS_KEY }); await redisClient.connect(); await mongoose.connect(<string>process.env.MONGOLAB_URI); let count = 0; const MAX_NUBMER_OF_PARALLEL_TASKS = 1; const INTERVAL_MILLISECONDS = 1000; setInterval( async () => { if (count > MAX_NUBMER_OF_PARALLEL_TASKS) { return; } count += 1; try { console.log('executing...', count); await (await chevre.service.task.createService()).executeOneIfExists({ // name: chevre.factory.taskName.AggregateScreeningEvent, executor: { name: 'sample' }, runsAt: { $lt: new Date() }, name: { $nin: [ chevre.factory.taskName.DeleteTransaction, chevre.factory.taskName.ImportEventCapacitiesFromCOA, chevre.factory.taskName.ImportEventsFromCOA, chevre.factory.taskName.AcceptCOAOffer, chevre.factory.taskName.CheckMovieTicket, chevre.factory.taskName.AuthorizePayment, chevre.factory.taskName.PublishPaymentUrl ] } })({ connection: mongoose.connection, redisClient, credentials: { sendGrid: await chevre.credentials.SendGrid.createInstance({ apiKey: 'xxx' }) }, settings: new chevre.settings.Settings({ deliverOrderLimit: 1, abortedTasksWithoutReport: [], coa: { timeout: 1000 }, gmo: { timeout: 1000, timeoutBackground: 1000, useFetch: true }, movieticketReserve: { timeout: 1000, timeoutCheck: 1000, minIntervalBetweenPayAndRefund: 0 }, numTryConfirmReserveTransaction: 10, useExperimentalFeature: false }) }); console.log('executed', count); } catch (error) { console.error(error); } count -= 1; }, INTERVAL_MILLISECONDS ); } executeTaskIfExists() .then(() => { console.log('success!'); }) .catch(console.error);