Hangfire完成后如何发出通知

How to give notification after Hangfire is done

您好,我在 MVC 5 中使用 hangfire 创建了一个后台作业。我发送了后台作业已启动的通知,但我不知道如何在后台作业完成时发送通知,因为我的 ActionResults 方法已返回。

控制器

public ActionResult RunMedia(int ID)
{
    BackgroundJob.Enqueue<CrawlerSearchRequestModel>(x => x.StoreMedia(ID,"NaturalPerson"));
        obj
       {
         success: true
       };

return JSON(obj, JsonRequestBehavior.AllowGet)
}

Ajax调用和Javascript通知

$(document).ready(function () {
    $(document).on("click", "#submitButton", function () {
        debugger;
        var userId = $(this).attr('userid')
        $.ajax({
            type: 'POST',
            url: "../LemonCreditAuth/NaturalPerson/RunMedia",
            data: {
                ID: userId
            },
            success: function (data) {
                swal("Adverse Media!", "Adverse Media has started. After a 20 seconds please check the media case for updates", "success");
            },
            error: function (data, error) {
                swal("Adverse Media!", "Error ocurred while trying to run adverse media", "warning");
            }
        });
    });

谢谢

正如其他人所说,您可以使用 signalR 或其他协议。为此,请使用 IApplyStateFilter 过滤器并实现接口的 OnStateApplied 方法。

public class YourAttribute : IApplyStateFilter{

    public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
    {
         if (context.NewState.IsFinal && context.NewState.Name == "Succeeded")
            //Send your message to client via signalR
    }}