使用NServiceBus是否有一种优雅的方式来安排任务。我在searching the net时找到了一种方法。 NServiceBus是否提供用于调度的内部API。
答案 0 :(得分:9)
NServiceBus现在内置了这个
从这里http://docs.particular.net/nservicebus/scheduling-with-nservicebus
public class ScheduleStartUpTasks : IWantToRunWhenTheBusStarts
{
public void Run()
{
Schedule.Every(TimeSpan.FromMinutes(5)).Action(() =>
Console.WriteLine("Another 5 minutes have elapsed."));
Schedule.Every(TimeSpan.FromMinutes(3)).Action(
"MyTaskName",() =>
{
Console.WriteLine("This will be logged under MyTaskName’.");
});
}
}
请注意警告
何时不使用它。您可以将计划任务看作一个简单的从不 结束传奇。但是一旦你的任务开始变得有些逻辑 (if- / switch-statements)你应该考虑转移到传奇。
答案 1 :(得分:3)
注意:此答案对NServiceBus版本2.0有效,但不再正确。版本3具有此功能。去看看Simon的答案,它对版本3有效!
NServiceBus没有内置的调度系统。它(在一个非常简单的层面上)是一个消息处理器。
您可以创建一个实现IWantToRunAtStartup(运行和停止方法)的类,并从那里创建一个计时器或执行您需要做的任何逻辑,以便在特定时间将消息丢弃到总线上。
其他人使用Quartz.NET和NServiceBus来获得更细粒度的调度功能。