merge job workers

This commit is contained in:
Ramnique Singh 2025-08-17 11:06:53 +05:30
parent cc8e9210d7
commit 7d70ff8fd2
3 changed files with 42 additions and 13 deletions

View file

@ -1,12 +1,52 @@
import '../lib/loadenv'; import '../lib/loadenv';
import { container } from "@/di/container"; import { container } from "@/di/container";
import { IJobsWorker } from "@/src/application/workers/jobs.worker"; import { IJobsWorker } from "@/src/application/workers/jobs.worker";
import { IJobRulesWorker } from "@/src/application/workers/job-rules.worker";
// this is the old script which just launches job-worker
// ------------------------------------------------------------
// (async () => {
// try {
// const jobsWorker = container.resolve<IJobsWorker>('jobsWorker');
// await jobsWorker.run();
// } catch (error) {
// console.error(`Unable to run jobs worker: ${error}`);
// }
// })();
(async () => { (async () => {
try { try {
const jobsWorker = container.resolve<IJobsWorker>('jobsWorker'); const jobsWorker = container.resolve<IJobsWorker>('jobsWorker');
const rulesWorker = container.resolve<IJobRulesWorker>('jobRulesWorker');
// Start jobs worker first so subscription is ready before rules publish
await jobsWorker.run(); await jobsWorker.run();
await rulesWorker.run();
const shutdown = async (signal: string) => {
console.log(`[worker] ${signal} received, shutting down...`);
try {
await Promise.allSettled([
jobsWorker.stop(),
rulesWorker.stop(),
]);
} finally {
process.exit(0);
}
};
process.on('SIGINT', () => shutdown('SIGINT'));
process.on('SIGTERM', () => shutdown('SIGTERM'));
process.on('uncaughtException', (err) => {
console.error('[worker] uncaughtException', err);
shutdown('uncaughtException');
});
process.on('unhandledRejection', (reason) => {
console.error('[worker] unhandledRejection', reason);
shutdown('unhandledRejection');
});
} catch (error) { } catch (error) {
console.error(`Unable to run jobs worker: ${error}`); console.error('Unable to start combined worker:', error);
process.exit(1);
} }
})(); })();

View file

@ -11,8 +11,7 @@
"setupQdrant": "tsx app/scripts/setup_qdrant.ts", "setupQdrant": "tsx app/scripts/setup_qdrant.ts",
"deleteQdrant": "tsx app/scripts/delete_qdrant.ts", "deleteQdrant": "tsx app/scripts/delete_qdrant.ts",
"rag-worker": "tsx app/scripts/rag-worker.ts", "rag-worker": "tsx app/scripts/rag-worker.ts",
"jobs-worker": "tsx app/scripts/jobs-worker.ts", "jobs-worker": "tsx app/scripts/jobs-worker.ts"
"job-rules-worker": "tsx app/scripts/job-rules.worker.ts"
}, },
"dependencies": { "dependencies": {
"@ai-sdk/openai": "^1.3.21", "@ai-sdk/openai": "^1.3.21",

View file

@ -201,16 +201,6 @@ services:
- COMPOSIO_API_KEY=${COMPOSIO_API_KEY} - COMPOSIO_API_KEY=${COMPOSIO_API_KEY}
restart: unless-stopped restart: unless-stopped
job-rules-worker:
build:
context: ./apps/rowboat
dockerfile: scripts.Dockerfile
command: ["npm", "run", "job-rules-worker"]
environment:
- MONGODB_CONNECTION_STRING=mongodb://mongo:27017/rowboat
- REDIS_URL=redis://redis:6379
restart: unless-stopped
# chat_widget: # chat_widget:
# build: # build:
# context: ./apps/experimental/chat_widget # context: ./apps/experimental/chat_widget