2016-11-07 13 views
3

У нас есть ресурс Azure Scale Out, проблема в том, что для каждого экземпляра Hangfire запускает новый сервер, любой способ ограничить только один сервер?Hangfire разрешает только один сервер

+0

Просто не запускайте сервер тогда? Или развертывать сервер в отдельном приложении, которое вы только развертываете? – mason

+0

Как определить, работает ли Hangfire? Любой метод api? Выберите SQL Server? Tks – Alexandre

ответ

0

Обойти эту проблему была: Проверка на 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 Storage Server, который, кажется, дело, вы можете сделать:

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

 Смежные вопросы

  • Нет связанных вопросов^_^