如何使用NServiceBus安排每天运行的任务

时间:2011-07-19 20:35:18

标签: nservicebus job-scheduling

使用NServiceBus是否有一种优雅的方式来安排任务。我在searching the net时找到了一种方法。 NServiceBus是否提供用于调度的内部API。

2 个答案:

答案 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来获得更细粒度的调度功能。