File tree Expand file tree Collapse file tree 4 files changed +30
-1
lines changed
libraries/nestjs-libraries/src/bull-mq-transport-new Expand file tree Collapse file tree 4 files changed +30
-1
lines changed Original file line number Diff line number Diff line change @@ -35,6 +35,7 @@ import { McpService } from '@gitroom/nestjs-libraries/mcp/mcp.service';
3535import { McpController } from '@gitroom/backend/api/routes/mcp.controller' ;
3636import { SetsController } from '@gitroom/backend/api/routes/sets.controller' ;
3737import { ThirdPartyController } from '@gitroom/backend/api/routes/third-party.controller' ;
38+ import { MonitorController } from '@gitroom/backend/api/routes/monitor.controller' ;
3839
3940const authenticatedController = [
4041 UsersController ,
@@ -63,6 +64,7 @@ const authenticatedController = [
6364 AuthController ,
6465 PublicController ,
6566 McpController ,
67+ MonitorController ,
6668 ...authenticatedController ,
6769 ] ,
6870 providers : [
Original file line number Diff line number Diff line change 1+ import { Controller , Get , Param } from '@nestjs/common' ;
2+ import { ApiTags } from '@nestjs/swagger' ;
3+ import { BullMqClient } from '@gitroom/nestjs-libraries/bull-mq-transport-new/client' ;
4+
5+ @ApiTags ( 'Monitor' )
6+ @Controller ( '/monitor' )
7+ export class MonitorController {
8+ constructor ( private _workerServiceProducer : BullMqClient ) { }
9+
10+ @Get ( '/queue/:name' )
11+ getMessagesGroup ( @Param ( 'name' ) name : string ) {
12+ return this . _workerServiceProducer . checkForStuckWaitingJobs ( name ) ;
13+ }
14+ }
Original file line number Diff line number Diff line change @@ -77,6 +77,19 @@ export class BullMqClient extends ClientProxy {
7777 ) ;
7878 }
7979
80+ async checkForStuckWaitingJobs ( queueName : string ) {
81+ const queue = this . getQueue ( queueName ) ;
82+ const getJobs = await queue . getJobs ( 'waiting' as const ) ;
83+ const now = Date . now ( ) ;
84+ const thresholdMs = 60 * 60 * 1000 ;
85+ return {
86+ valid : ! getJobs . some ( ( job ) => {
87+ const age = now - job . timestamp ;
88+ return age > thresholdMs ;
89+ } ) ,
90+ } ;
91+ }
92+
8093 async dispatchEvent ( packet : ReadPacket < any > ) : Promise < any > {
8194 console . log ( 'event to dispatch: ' , packet ) ;
8295 const queue = this . getQueue ( packet . pattern ) ;
Original file line number Diff line number Diff line change 1111 },
1212 "packageManager" :
" [email protected] " ,
1313 "scripts" : {
14- "dev" : " pnpm run --filter ./apps/extension --filter ./apps/workers --filter ./apps/ backend --filter ./apps/frontend --parallel dev" ,
14+ "dev" : " pnpm run --filter ./apps/extension --filter ./apps/backend --filter ./apps/frontend --parallel dev" ,
1515 "pm2" : " pnpm dlx concurrently \" pnpm run pm2-run\" \" pnpm run entryfile\" " ,
1616 "entryfile" : " ./entrypoint.sh" ,
1717 "publish-sdk" : " pnpm run --filter ./apps/sdk publish" ,
You can’t perform that action at this time.
0 commit comments