【发布时间】:2014-03-12 19:06:20
【问题描述】:
我在 asp.net mvc 应用程序中使用quartz.net。
尝试将其配置为用户 ADOStore。
我已经创建了表格。
NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "TestScheduler";
properties["quartz.scheduler.instanceId"] = "instance_one";
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
properties["quartz.jobStore.useProperties"] = "true";
properties["quartz.jobStore.dataSource"] = "default";
properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
// if running MS SQL Server we need this
properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";
properties["quartz.dataSource.default.connectionString"] = "Server=.\\SQLExpress;Database=test;Trusted_Connection=True;";
properties["quartz.dataSource.default.provider"] = "SqlServer-20";
// StdSchedulerFactory
this.Initialize(properties);
运行应用程序时,我收到错误消息:
在 Quartz.dll 中发生了“Quartz.ObjectAlreadyExistsException”类型的第一次机会异常 Quartz.dll 中出现了“Quartz.JobPersistenceException”类型的第一次机会异常 Quartz.dll 中出现了“Quartz.JobPersistenceException”类型的第一次机会异常
在查看 QRTZ_ 表时,QRTZ_JOB_DETAILS 中有一篇关于该工作的帖子。其他表是空的。
知道是什么导致了这里的问题吗?
更新:
public class UnitySchedulerFactory : StdSchedulerFactory
{
private readonly UnityJobFactory unityJobFactory;
public UnitySchedulerFactory(UnityJobFactory unityJobFactory)
{
NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "TestScheduler";
properties["quartz.scheduler.instanceId"] = "instance_one";
properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
properties["quartz.jobStore.useProperties"] = "true";
properties["quartz.jobStore.dataSource"] = "default";
properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
// if running MS SQL Server we need this
properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";
properties["quartz.dataSource.default.connectionString"] = "Server=.\\SQLExpress;Database=189021;Trusted_Connection=True;";
properties["quartz.dataSource.default.provider"] = "SqlServer-20";
this.Initialize(properties);
this.unityJobFactory = unityJobFactory;
}
protected override IScheduler Instantiate(QuartzSchedulerResources rsrcs, QuartzScheduler qs)
{
qs.JobFactory = this.unityJobFactory;
return base.Instantiate(rsrcs, qs);
}
}
全球.asax
var scheduler = unityContainer.Resolve<IQuartzScheduler>();
scheduler.Run();
更新 2
这是整个石英解决方案的链接:
Quartz 表由以下创建:
https://github.com/MassTransit/MassTransit-Quartz/blob/master/setup_sql_server.sql
全球.asax:
var unityContainer = Infrastructure.Bootstrapper.Initialise();
var scheduler = unityContainer.Resolve<IQuartzScheduler>();
scheduler.Run();
我正在尝试使用 ADOstore 处理失火问题,以便系统可以处理重启或崩溃。
【问题讨论】:
-
你在哪里初始化 Quartz?
-
已更新问题
-
你是这个意思吗?
-
您需要向我们提供更多信息。能否请您将您的解决方案上传到某个地方,以便我们查看?干杯。
-
好的。问题再次更新。
标签: quartz-scheduler quartz.net