2016-11-07 7 views
3

Azure Scale Outリソースがあります。問題は次のとおりです。各インスタンスごとに、Hangfireが新しいサーバーを起動します。Hangfireはただ1つのサーバーを許可します

+0

サーバーを起動しないでください。または、サーバーを別のアプリケーションにデプロイするだけです。 – mason

+0

ハングファイアが実行されているかどうかを確認する方法はありますか?任意のAPIメソッドですか? SQL Serverを選択しますか? Tks – Alexandre

答えて

0

この問題を回避するにはしたアクティブHangfireサーバがある場合のSQLServerに確認してください:

using (var connection = new SqlConnection(myConnString)) 
       { 
        SqlCommand command = connection.CreateCommand(); 
        command.CommandText = "SELECT MAX(LastHeartBeat) FROM HangFire.Server"; 
        connection.Open(); 
        using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult)) 
        { 
         if (reader.HasRows) 
         { 
          reader.Read(); 
          DateTime lastBeat = reader.GetDateTime(0); 
          bool myResult = lastBeat >= DateTime.UtcNow.AddHours(-2); 
         } 
        } 
       } 
1

ケースのように思われる、あなたはSQL Serverのストレージを使用していると仮定すると、あなたが行うことができます。

GlobalConfiguration.Configuration.UseSqlServerStorage("YourDB"); 
     var servers = Hangfire.SqlServer.SqlServerStorage.Current 
                 .GetMonitoringApi() 
                 .Servers(); 
     if (servers != null && servers.Count < 1) 
      //start new server here; 
関連する問題