当前位置: 首页 > 文档资料 > hangfire 中文文档 >

最佳实践

优质
小牛编辑
143浏览
2023-12-01

处理后台任务与常规调用方法有很大的不同。本指南旨在帮助让您的后台任务平稳有效地运行。本文基于 这篇博客文章

使任务参数小而简单

方法(任务)在调用之前会被序列化。使用 TypeConverter 类将参数转换为 JSON 字符串。如果您有复杂的实体和 / 或大对象; 包括数组,最好将它们放入数据库,然后只将其标识 (id) 传递给后台任务。

错误例子:

public void Method(Entity entity) { }

可以换成这样:

public void Method(int entityId) { }

让后台任务可重试

重试 意味着可以在执行过程中中断,然后再安全地调用。中断可能是由许多不同的事情引起的 (即异常,服务端关闭), 而 Hangfire 将尝试重试多次。

如果没有合理安排,将遇到很多问题。例如,如果您有一个发送的电子邮件的后台任务,SMTP 服务却发生错误,则应该以邮件发送出去的事件作为结束标志。

错误的例子:

public void Method()
{
    _emailService.Send("person@exapmle.com", "Hello!");
}

可以换成这样:

public void Method(int deliveryId)
{
    if (_emailService.IsNotDelivered(deliveryId))
    {
        _emailService.Send("person@example.com", "Hello!");
        _emailService.SetDelivered(deliveryId);
    }
}

未完待续。。。