У нас есть ресурс Azure Scale Out, проблема в том, что для каждого экземпляра Hangfire запускает новый сервер, любой способ ограничить только один сервер?Hangfire разрешает только один сервер
3
A
ответ
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;
Просто не запускайте сервер тогда? Или развертывать сервер в отдельном приложении, которое вы только развертываете? – mason
Как определить, работает ли Hangfire? Любой метод api? Выберите SQL Server? Tks – Alexandre