将 Hangfire BackgroundJobClient 作为 Transient 注入是否安全?

问题描述 投票:0回答:1

我有一个 .NET 7 项目,每天创建一个作业,该作业又创建其他作业。主作业存在于一个服务中,子作业各自有自己的服务。是否可以注入已设置为瞬态服务的 IBackgroundJobClient 接口?我注意到在客户端的注释中写着“请为每个操作创建一个状态类的新实例”,我不确定它是否适用于客户端的“创建”方法。

builder.Services.AddTransient<IBackgroundJobClient, BackgroundJobClient>();

public MainJobService(IBackgroundJobClient client)
{
    public void CreateJob() {
        client.Create<ISubJobService>(myInterface => myInterface.CreateSubJobs());
    }
}

public SubJobService(IBackgroundJobClient client)
{
    public void CreateSubJobs() {

        for (int x; x <10; x++)
        {
            client.Create<IJobService>(myInterface => myInterface.CreateJob());
        }
    }
}
c# .net-core hangfire
1个回答
0
投票

从工作的角度来看这并不重要。每个作业都是一个范围 - 这意味着每当您创建一个新作业时,该作业都会通过

CoreBackgroundJobPerformer
激活,并使用
JobActivator
为该作业创建一个新范围。

因此,

BackgroundJobClient
的主要工作是创建稍后将通过 Hangfire Server 激活的作业定义。

您可以在我的其他答案中找到更深入的内容这里

© www.soinside.com 2019 - 2024. All rights reserved.