3
Azure Scale Outリソースがあります。問題は次のとおりです。各インスタンスごとに、Hangfireが新しいサーバーを起動します。Hangfireはただ1つのサーバーを許可します
Azure Scale Outリソースがあります。問題は次のとおりです。各インスタンスごとに、Hangfireが新しいサーバーを起動します。Hangfireはただ1つのサーバーを許可します
この問題を回避するにはしたアクティブ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);
}
}
}
ケースのように思われる、あなたはSQL Serverのストレージを使用していると仮定すると、あなたが行うことができます。
GlobalConfiguration.Configuration.UseSqlServerStorage("YourDB");
var servers = Hangfire.SqlServer.SqlServerStorage.Current
.GetMonitoringApi()
.Servers();
if (servers != null && servers.Count < 1)
//start new server here;
サーバーを起動しないでください。または、サーバーを別のアプリケーションにデプロイするだけです。 – mason
ハングファイアが実行されているかどうかを確認する方法はありますか?任意のAPIメソッドですか? SQL Serverを選択しますか? Tks – Alexandre