moved jobs to provider config
This commit is contained in:
parent
f9c2860ff4
commit
52c2f08db2
7 changed files with 183 additions and 76 deletions
|
|
@ -140,46 +140,50 @@ export class QueueService {
|
|||
this.logger.debug('Job progress', { id: job.id, progress });
|
||||
});
|
||||
}
|
||||
|
||||
private async setupScheduledTasks() {
|
||||
try {
|
||||
// Market data refresh every minute using Yahoo Finance
|
||||
await this.addRecurringJob({
|
||||
type: 'market-data-refresh',
|
||||
service: 'market-data',
|
||||
provider: 'yahoo-finance',
|
||||
operation: 'live-data',
|
||||
payload: { symbol: 'AAPL' }
|
||||
}, '*/1 * * * *');
|
||||
this.logger.info('Setting up scheduled tasks from providers...');
|
||||
|
||||
// Get all scheduled jobs from all providers
|
||||
const allScheduledJobs = providerRegistry.getAllScheduledJobs();
|
||||
|
||||
if (allScheduledJobs.length === 0) {
|
||||
this.logger.warn('No scheduled jobs found in providers');
|
||||
return;
|
||||
}
|
||||
|
||||
// Market data refresh using QuoteMedia every 2 minutes
|
||||
await this.addRecurringJob({
|
||||
type: 'market-data-quotemedia',
|
||||
service: 'market-data',
|
||||
provider: 'quotemedia',
|
||||
operation: 'batch-quotes',
|
||||
payload: { symbols: ['GOOGL', 'MSFT', 'TSLA'] }
|
||||
}, '*/2 * * * *');
|
||||
// Register each scheduled job
|
||||
for (const { service, provider, job } of allScheduledJobs) {
|
||||
try {
|
||||
await this.addRecurringJob({
|
||||
type: job.type,
|
||||
service: service,
|
||||
provider: provider,
|
||||
operation: job.operation,
|
||||
payload: job.payload,
|
||||
priority: job.priority
|
||||
}, job.cronPattern);
|
||||
|
||||
// Proxy fetch every 15 minutes
|
||||
await this.addRecurringJob({
|
||||
type: 'proxy-maintenance',
|
||||
service: 'proxy',
|
||||
provider: 'proxy-service',
|
||||
operation: 'fetch-and-check',
|
||||
payload: {}
|
||||
}, '*/15 * * * *');
|
||||
this.logger.info('Scheduled job registered', {
|
||||
type: job.type,
|
||||
service,
|
||||
provider,
|
||||
operation: job.operation,
|
||||
cronPattern: job.cronPattern,
|
||||
description: job.description
|
||||
});
|
||||
} catch (error) {
|
||||
this.logger.error('Failed to register scheduled job', {
|
||||
type: job.type,
|
||||
service,
|
||||
provider,
|
||||
error: error instanceof Error ? error.message : String(error)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Proxy cleanup daily at 2 AM
|
||||
await this.addRecurringJob({
|
||||
type: 'proxy-cleanup',
|
||||
service: 'proxy',
|
||||
provider: 'proxy-service',
|
||||
operation: 'cleanup-old-data',
|
||||
payload: { daysToKeep: 7 }
|
||||
}, '0 2 * * *');
|
||||
|
||||
this.logger.info('Scheduled tasks configured');
|
||||
this.logger.info(`Successfully configured ${allScheduledJobs.length} scheduled tasks`);
|
||||
|
||||
} catch (error) {
|
||||
this.logger.error('Failed to setup scheduled tasks', error);
|
||||
}
|
||||
|
|
@ -256,13 +260,26 @@ export class QueueService {
|
|||
}
|
||||
return this.worker.opts.concurrency || 1;
|
||||
}
|
||||
|
||||
getRegisteredProviders() {
|
||||
return providerRegistry.getProviders().map(({ key, config }) => ({
|
||||
key,
|
||||
name: config.name,
|
||||
service: config.service,
|
||||
operations: Object.keys(config.operations)
|
||||
operations: Object.keys(config.operations),
|
||||
scheduledJobs: config.scheduledJobs?.length || 0
|
||||
}));
|
||||
}
|
||||
|
||||
getScheduledJobsInfo() {
|
||||
return providerRegistry.getAllScheduledJobs().map(({ service, provider, job }) => ({
|
||||
id: `${service}-${provider}-${job.type}`,
|
||||
service,
|
||||
provider,
|
||||
type: job.type,
|
||||
operation: job.operation,
|
||||
cronPattern: job.cronPattern,
|
||||
priority: job.priority,
|
||||
description: job.description
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue