5

NServiceBusを使用してタスクをスケジュールするエレガントな方法はありますか?ネットを検索しているときに見つけた方法が1つあります。NServiceBusはスケジューリング用の内部APIを提供しますか?

4

2 に答える 2

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 ステートメント) を取得し始めたらすぐに、サガへの移行を検討する必要があります。

于 2012-12-20T03:29:05.053 に答える
3

注: この回答は NServiceBus バージョン 2.0 に対して有効でしたが、もはや正しくありません。バージョン 3 にはこの機能があります。サイモンの答えを読んでください。バージョン3で有効です!

NServiceBus には組み込みのスケジューリング システムがありません。これは (非常に単純なレベルで) メッセージ プロセッサです。

IWantToRunAtStartup (Run および Stop メソッド) を実装するクラスを作成し、そこからタイマーを作成するか、特定の時間にメッセージをバスにドロップするために必要なロジックを実行できます。

他の人々は、Quartz.NETを NServiceBus と一緒に使用して、より詳細なスケジューリング機能を取得しています。

于 2011-07-21T16:33:42.523 に答える