首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Quartz / Scheduling的轨道交通--是否有任何实现的例子?

带有Quartz / Scheduling的轨道交通--是否有任何实现的例子?
EN

Stack Overflow用户
提问于 2013-12-03 15:47:59
回答 1查看 4.8K关注 0票数 8

我搜索了一个示例实现或关于如何使用地铁的Quartz集成(https://github.com/MassTransit/MassTransit-Quartz)的博客文章。

目前,我只能看一下代码库附带的单元测试,而我并没有取得多大进展。

有什么例子或好的博客文章可以帮助我开始地铁和石英的日程安排吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-17 09:02:28

此示例允许您在SQL数据库中持久化MassTransit计划消息。在开箱即用的情况下,MassTransit只保留在内存中,而不进行某些配置更改。

首先,您需要对app/web.config文件进行微妙的更改,以包含以下两个块:

代码语言:javascript
复制
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />

代码语言:javascript
复制
 <quartz>
<add key="quartz.scheduler.instanceName" value="MassTransit-Quartz" />
<add key="quartz.scheduler.instanceId" value="AUTO" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="4" />
<add key="quartz.threadPool.threadPriority" value="2" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />

<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.useProperties" value="false" />

<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz" />
<add key="quartz.jobStore.clustered" value="true" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.dataSource" value="quartzDS" />

<add key="quartz.dataSource.quartzDS.connectionString" value="Server=(local);Database=Quartz;Integrated Security=SSPI" />
<add key="quartz.dataSource.quartzDS.provider" value="SqlServer-20" />

然后,在本地SQL中创建一个名为"Quartz“的新数据库,下载quartz.net源代码并定位数据库脚本。

"tables_sqlServer.sql“

对Quartz本地数据库运行此操作以创建架构。现在,您已经准备好将计划好的消息保存在数据库中,您需要从MassTransit Quartz集成库订阅这两个使用者:

代码语言:javascript
复制
var scheduler = CreateScheduler();      
sb.SubscribeConsumer(() => new ScheduleMessageConsumer(scheduler));
sb.SubscribeConsumer(() => new CancelScheduledMessageConsumer(scheduler));

其中调度程序是IScheduler:

代码语言:javascript
复制
static IScheduler CreateScheduler()
{
    ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
    return schedulerFactory.GetScheduler();
}

而sb是您的IServiceBus型服务总线。

最后,在代码调用中:

代码语言:javascript
复制
 Bus.ScheduleMessage(SchedulePeriodInSecondsFromNow, MessageToSchedule); 

并有一个"MessageToSchedule“类型的消费者。如果打开数据库并查询QRTZ_TRIGGERS表,就会看到作业出现在那里和QRTZ_JOB_DETAILS中。

希望这能有所帮助!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20355573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档