Skip to content

Commit 838b895

Browse files
author
Gerald Baulig
committed
fix(external-jobs): add external-jobs sourcePath and importPath to service config
1 parent 80fd8a4 commit 838b895

File tree

7 files changed

+243
-212
lines changed

7 files changed

+243
-212
lines changed

cfg/config.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,10 @@
224224
"path": "/admin/queues"
225225
}
226226
},
227-
"externalJobs": [],
227+
"externalJobs": {
228+
"sourcePath": "./lib/external-jobs",
229+
"importPath": "./external-jobs"
230+
},
228231
"queue": [
229232
{
230233
"name": "default-queue",

eslint.config.mjs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// @ts-check
22

33
import eslint from '@eslint/js';
4-
import { RuleTester } from 'eslint';
54
import tseslint from 'typescript-eslint';
65

76
const rules = tseslint.config(

src/worker.ts

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import path from 'path';
12
import * as _ from 'lodash-es';
23
import * as chassis from '@restorecommerce/chassis-srv';
34
import { Events, Topic, registerProtoMeta } from '@restorecommerce/kafka-client';
@@ -335,9 +336,10 @@ export class Worker {
335336
} as BindConfig<HealthDefinition>);
336337

337338
// Hook any external jobs
338-
let externalJobFiles;
339+
const externalJobDir = process.env.EXTERNAL_JOBS_DIR ?? cfg.get('externalJobs:sourcePath') ?? './lib/external-jobs';
340+
let externalJobFiles: Array<string>;
339341
try {
340-
externalJobFiles = fs.readdirSync(process.env.EXTERNAL_JOBS_DIR || './lib/external-jobs');
342+
externalJobFiles = fs.readdirSync(process.env.EXTERNAL_JOBS_DIR ?? './lib/external-jobs');
341343
} catch (err: any) {
342344
if (err.message.includes('no such file or directory')) {
343345
this.logger.info('No files for external job processors found');
@@ -348,17 +350,17 @@ export class Worker {
348350
if (externalJobFiles?.length > 0) {
349351
externalJobFiles.forEach(async (externalFile) => {
350352
if (externalFile.endsWith('.js') || externalFile.endsWith('.cjs')) {
351-
const require_dir = process.env.EXTERNAL_JOBS_REQUIRE_DIR ?? './jobs/';
353+
const import_dir = process.env.EXTERNAL_JOBS_REQUIRE_DIR ?? cfg.get('externalJobs:importPath') ?? './external-jobs/';
352354

353355
try {
354-
const fileImport = await import(require_dir + externalFile);
356+
const fileImport = await import(path.join(import_dir, externalFile));
355357
// check for double default
356358
if (fileImport?.default?.default) {
357-
(async () => (await import(require_dir + externalFile)).default.default(cfg, logger, events, runWorker))().catch(err => {
359+
(async () => (await import(import_dir + externalFile)).default.default(cfg, logger, events, runWorker))().catch(err => {
358360
this.logger.error(`Error scheduling external job ${externalFile}`, { err: err.message });
359361
});
360362
} else {
361-
(async () => (await import(require_dir + externalFile)).default(cfg, logger, events, runWorker))().catch(err => {
363+
(async () => (await import(import_dir + externalFile)).default(cfg, logger, events, runWorker))().catch(err => {
362364
this.logger.error(`Error scheduling external job ${externalFile}`, { err: err.message });
363365
});
364366
}

test/cfg/config_test.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@
143143
{
144144
"name": "schedulingGRPC",
145145
"provider": "grpc",
146-
"addr": "localhost:50054"
146+
"addr": "localhost:50154"
147147
}
148148
]
149149
},
@@ -156,13 +156,13 @@
156156

157157
"client": {
158158
"schedulingClient": {
159-
"address": "localhost:50054"
159+
"address": "localhost:50154"
160160
},
161161
"acs-srv": {
162-
"address": "localhost:50061"
162+
"address": "localhost:50161"
163163
},
164164
"user": {
165-
"address": "localhost:50051"
165+
"address": "localhost:50151"
166166
}
167167
},
168168
"kue-prefix": "scheduling-srv-test",

0 commit comments

Comments
 (0)