2016-07-21 4 views
0

NServiceBusスケジューラを使用している間、定義されたデリゲートをトリガするのに失敗しました。 EndpointSchedulerクラスをセットアップするには、以下のリンクのドキュメントを使用しました。NServiceBus 5.2.14 - スケジューラがデリゲートをトリガできません

エンドポイントに対応するタイムアウトキューが作成され、メッセージが正常にキューに入ります。実行中にエラーは発生しませんが、スケジューラはデリゲートをトリガしません。私は現在、NServiceBus 5.2.14を使用しています。同様のテストは、NServiceBus 3.2.7を使用して動作します。スケジューラがデリゲートをトリガしない理由は何ですか?いくつかの潜在的なセットアップの問題を指摘して@DavidBoikeへ

http://docs.particular.net/nservicebus/scheduling/

public class EndpointScheduler : IWantToRunWhenBusStartsAndStops, ILoggable 
{ 
    public EndpointScheduler(Schedule schedule) 
    { 
     this.schedule = schedule; 
    } 
    public void Start() 
    { 
     schedule.Every(
      TimeSpan.FromMinutes(1), 
      "Test", 
      () => 
      { 
       Debug.WriteLine("I'm testing the scheduler"); 
      } 
     ); 
    }   
    public void Stop() 
    { 
    } 
} 
+1

残念ながら、それはWorks On My Machine™だけです。 Debug.WriteLineはコンソールに出力されませんが、Visual Studioの出力ウィンドウに表示されます。 Console.WriteLineはコンソールに作用します。私はまた、タスクの前後に記録されたINFOメッセージを見て、その上でブレークポイントを打つことができます。あなたの例で私的な 'schedule' varがないと仮定します。それ以外の場合はコンパイルされません。それはNSBからではないのでILoggableとは何ですか?それはそれと関係がありますか?それ以外の場合は、エンドポイント構成コードを表示します。 TimeoutManagerとTimeoutManagerBasedDeferral機能が有効になっていることを確認しますか? –

+0

@DavidBoikeこれは完全に私によって引き起こされました。私のEndpointConfigはこの設定を持っていたDisableFeature (); これを削除すると間違いが修正されました。これを見てくれてありがとう! – Pietro

答えて

1

感謝。

エンドポイントの設定が含まれている:それは私が遭遇した問題を修正し削除

configuration.DisableFeature<TimeoutManager>() 

これは、スケジューラがTimeoutManagerに依存しているためです。後で(TimeoutManagerを使用して)処理するメッセージを延期し、そのメッセージが受信されるとデリゲートが呼び出されます。 TimeoutManagerが有効になっていなければ、これは機能しません。

関連する問題