Я настроил повторяющееся задание, которое просто обрабатывает некоторые заказы:
{
RecurringJob.AddOrUpdate(
hangFireJob.JobId,
() => hangFireJob.Execute(),
hangFireJob.Schedule);
}
Проблема, с которой я сталкиваюсь, заключается в том, что у нас есть несколько «резервных» серверов, на которых работает один и тот же код. Все они обращаются к одной и той же базе данных HangFire.
Я вижу, что одно и то же задание выполняется несколько раз, что, очевидно, приводит к ошибкам, поскольку заказы уже обработаны.
Мне нужна резервная копия серверы, чтобы распознать, что повторяющееся задание уже поставлено в очередь, и не ставить его в очередь снова. Я решил, что для этого потребуется go в имени задания (первый параметр выше). Что мне здесь не хватает?
Я включил настройку сервера Hangfire ниже:
private IEnumerable<IDisposable> GetHangfireServers()
{
var configSettings = new Settings();
GlobalConfiguration.Configuration
.UseNinjectActivator(_kernel)
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage(configSettings.HangfireConnectionString, new SqlServerStorageOptions
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true,
DisableGlobalLocks = false,
SchemaName = "LuxAdapter",
PrepareSchemaIfNecessary = false
});
yield return new BackgroundJobServer();
}```