2016-01-16 3 views
4

Во время разработки приложения HangFire с C# ASP.NET, и я решил реализовать функционально там, где администратор может управлять состоянием сервера, заданиями.HangFire Server Enable - отключить вручную

  • пункт Список

сервера Включить Выключить состояние. Использование кнопки «Включить кнопку» click event Admin может запустить JOB-сервер, чтобы выполнить все Fire и Forget and Recurrent задание . Кнопка Disable останавливает все действия JOB.

  • Получить текущее состояние сервера

Я хочу, чтобы получить текущее состояние JOB сервера, так что я могу показать это сервер включен или выключен.

  • Получить состояние и включить/отключить состояние рабочих мест (только рецидивирующий).

ответ

6

Если вы хотите управлять сервером/заданием, созданным Hangfire, вы можете использовать MonitoringApi или JobStorage для получения статусов.

Примеры кодов:

var _jobStorage = JobStorage.Current; 

// How to get recurringjobs 
using (var connection = _jobStorage.GetConnection()) 
{ 
    var storageConnection = connection as JobStorageConnection; 

    if (storageConnection != null) 
    { 
     var recurringJob = storageConnection.GetRecurringJobs(); 

     foreach(var job in recurringJob) 
     { 
      // do you stuff 
     } 
    } 
} 

// How to get Servers 

var monitoringApi = _jobStorage.GetMonitoringApi(); 
var serverList = monitoringApi.Servers(); 

foreach(var server in serverList) 
{ 
    // do you stuff with the server 
    // you can use var connection = _jobStorage.GetConnection() 
    // to remove server 
} 

Здесь вы можете поиграть с замедленным воспламенением.

+0

Знаете ли вы, как запускать и останавливать работу вручную? –

+0

Я этого не делал раньше, и не знаю, позволяет ли hangfire прекратить работу во время выполнения. Все, что я знаю, вы можете удалить, пока работа находится в состоянии очереди и требует задания, если вы хотите. – jtabuloc

+0

У меня повторяющаяся работа, которая выполняется каждую минуту. По какой-то причине, если я хочу, чтобы эта работа остановилась, пока я не попрошу снова начать с нажатия кнопки. Можно ли это сделать с помощью функции hangfire delete и re queue? –

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

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