Я использую замедленное воспламенение, подкрепленную SQL Server, с помощью Azure Service BusРаботы повторена через 1 минуту с помощью замедленного воспламенения с Azure Service Bus
Конфигурации сервераМоих замедленного воспламенения выглядит следующим образом:
var hangfireServiceBusQueuePrefix = ConfigurationManager.AppSettings["HangfireServiceBusQueuePrefix"];
var azureServiceBusConnectionString = ConfigurationManager.ConnectionStrings["AzureServiceBus"].ConnectionString;
var serviceBusQueueOptions = new ServiceBusQueueOptions
{
ConnectionString = azureServiceBusConnectionString,
Queues = new[] { EnqueuedState.DefaultQueue },
QueuePrefix = (hangfireServiceBusQueuePrefix.Equals("MachineName")
? Environment.MachineName
: hangfireServiceBusQueuePrefix)
+ "-hangfire-"
};
var storage = new SqlServerStorage("Hangfire")
.UseServiceBusQueues(serviceBusQueueOptions);
_hangfireConfiguration = GlobalConfiguration.Configuration
.UseStorage(storage);
Я заметил что если моя работа не завершена после того, как чуть более 1 минуты, то в настоящее время переигран - даже если первоначальный работа была все еще работает ...
Например, когда я в очереди на работу, как это:
BackgroundJob.Enqueue(MyMethod);
и если мы представим себе MyMethod
выглядит следующим образом
public void MyMethod()
{
Console.WriteLine("MyMethod Started");
Thread.Sleep(TimeSpan.FromSeconds(90));
Console.WriteLine("MyMethod Finished");
}
... что случается, 1 минута в, метод «перезагрузка» 30 секунд спустя, первый экземпляр будет завершена, то второй экземпляр завершит еще 60 секунд.
Мне нужна эта работа, чтобы закончить, не будучи повторно пытался через одну минуту
Незначительные загвоздка в том, что у меня нет доступа к методу RenewLock с помощью Hangfire Azure Service Автобусная библиотека ... Я не думаю? – Alex
Блок обновления находится на brokeredmessage. У вас есть доступ к брокерскому сообщению? – Thomas
Нет, все это завернуто. Я посмотрю источник для библиотеки и посмотрю, есть ли что-нибудь, что я могу добавить – Alex