786 messaggi dal 08 aprile 2009
Ho un problema di injection con quartz.net.
Mi spiego meglio:
ho un hosting services che alla partenza deve schedulare dei job. e fin qui tutto ok.
Per la schedulazione dei job sto provando a utlizzare Quartz e alla prima implementazione non ho problemi.
Ho il problema per l'injection di alcune classi che istanzio con Singleton in quanto la stessa istanza deve essere condivisa anche da un interfaccia grafica in MVC che mi fa vedere lo stato di avanzamento dei task schedulati in coda e quelli che sono in esecuzione.

Qui nasce il problema in quanto ho si implemntato una classe di Jobfactory personalizzata per quartz per gestire la dipendenza ma mi rinstanzia le classi e quindi nell'interfaccia grafica non riesco a vedere le liste di coda.

Qualcuno riesce ad aiutarmi?
786 messaggi dal 08 aprile 2009
Soluzione:
quello che sbagliavo era instanziare la classe dello scheduler di Quartz in Singleton nello startup del progetto.
Quindi nello startup del progetto istanzio in singleton tutte le classi che mi servono e quindi: il mio HostedService, le classi dei jobs e le classi dei miei worker.

Nel mio HostedService in injection mi faccio passare le mie classi che mi servono e nel costrutto istanzio lo scheduler:
  _scheduler = StdSchedulerFactory.GetDefaultScheduler().GetAwaiter().GetResult();
  _scheduler.JobFactory = new SingletonJobFactory(serviceProvider);


infine ho implementato la mia classe personalizzata per il job factory:
  public class SingletonJobFactory : IJobFactory
    {
        private readonly IServiceProvider _serviceProvider;
        public SingletonJobFactory(IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
        }
        public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
        {
            return _serviceProvider.GetRequiredService(bundle.JobDetail.JobType) as IJob;
        }
        public void ReturnJob(IJob job) { }
    }

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.