I have a job which needs to kick off some methods on another object. I'd like to be able to pass these into the job in its constructor.
Looking around, it seems that the only way to achieve this is to use one of IoC frameworks. Whilst this method will be a solution for me in the future, right now I need a vanilla solution, not requiring any IoC.
I am aware of the JobDataMap but the Best Practices documentation advises against this due to serialization. The object is multi-threaded and statefull, so serializing would be code suicide anyhow.
How can I create a job similar to below:
public class MyJob : IJob
{
private readonly IFoo _foo;
public StopMonitoring(IFoo foo)
{
_foo = foo;
}
public void Execute(IJobExecutionContext context)
{
foo.GetCurrentState();
}
}
}--
You received this message because you are subscribed to the Google Groups "Quartz.NET" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quartznet+...@googlegroups.com.
To post to this group, send email to quar...@googlegroups.com.
Visit this group at http://groups.google.com/group/quartznet.
For more options, visit https://groups.google.com/d/optout.
public class MyJobFactory : IJobFactory
{
private IFoo _foo;
public MyJobFactory(IFoo foo)
{
_foo = foo;
}
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return new MyJob(_foo);
}
public void ReturnJob(IJob job)
{
return new MyJob(_foo);
}
}
The bit I'm not getting is (probably so simple that I'm not even noticing it) is, if I have several JobFactories for different jobs which have different construction parameters, how do I go about using them?
So, creating a job is currently:
var myJob= JobBuilder.Create<MyJob>().WithIdentity("myJob").Build();
what do I need to change to get the builder to use my factory?
Cheers