【问题标题】:HangFire Server Enable - Disable manuallyHangFire 服务器启用 - 手动禁用
【发布时间】:2016-01-16 07:01:02
【问题描述】:

在使用 C# ASP.NET 开发HangFire 应用程序期间,我决定在功能上实现管理员可以管理服务器状态、作业的位置。

  • 列表项

服务器启用禁用状态。使用启用按钮单击事件管理员 可以启动 JOB 服务器,以便所有 Fire and Forget 和 Recurrent 作业都可以 执行。和 Disable 按钮停止 JOB 的所有活动。

  • 检索服务器的当前状态

我想检索 JOB 服务器的当前状态,所以我可以显示 服务器开启或关闭。

  • 检索状态并启用/禁用作业的状态(仅循环)。

【问题讨论】:

    标签: c# asp.net hangfire


    【解决方案1】:

    如果你想管理由 Hangfire 创建的 Server/Job,你可以使用 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
    }
    

    从这里你可以玩 Hangfire。

    【讨论】:

    • 我以前没有这样做过,我不知道hangfire是否允许在执行时停止工作。我所知道的是,您可以在作业处于排队状态时删除并重新排队作业。
    • 我有重复的工作,每分钟执行一次。出于某种原因,如果我希望该工作停止,直到我再次要求按下按钮开始。这可以使用hangfire删除和重新排队功能来完成吗?
    • 您有没有想过如何禁用重复任务?就我而言,我的 Hangfire 作为控制台应用程序存在。我是否需要停止并重新启动控制台应用程序才能更改重复任务的计划?
    • @CiaranGallagher 要禁用重复作业,请将其删除。正在进行的工作将完成。示例:在 Core 中,注入一个 IRecurringJobManager recurringJobs 服务,然后使用该服务将作业出队:recurringJobs.RemoveIfExists(nameof(JobName))
    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 2013-06-07
    • 2010-09-11
    • 2021-12-22
    • 2019-01-08
    • 2018-07-24
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多