我不确定我是否正确理解 Hangifre。
所以我有我的客户端,它正在将其发送到服务器:
var testModel = new CreateModel();
testModel.App = "example.com/";
testModel.Name = "testname.zip";
var jobId = BackgroundJob.Enqueue(() => JsonConvert.SerializeObject(testModel));
所以这工作正常,作业已创建,并与数据库中的 Json testModel 参数一起。
现在我需要在服务器端对 testModel 做一些事情。服务器运行正常,但是我怎样才能实现它,我得到这份工作并在服务器上用它做一些事情?数据库说任务
Succeeded
,但是我无法在服务器端获取它。我需要处理 Hangfire 服务器上的数据。
我在hangifre文档中找不到它。
https://azure.microsoft.com/en-us/products/functions) 或 Amazon Lambda (https://aws.amazon.com/lambda/) -您排队的“事物”需要是一些独立的任务。将其视为在未来某个任意时间执行的方法。 所以你可能想要类似的东西
public class DownloadFileJob
{
public async Task ExecuteAsync(string url, string fileName, PerformContext context, CancellationToken token)
{
// do whatever you're trying to do with the URL and file name
}
}
你会像这样将其排入队列(你的问题中不需要该模型):
var jobId = BackgroundJob.Enqueue<DownloadFileJob>(m => m.ExecuteAsync(url, fileName, null, CancellationToken.None);
作业在排队时被序列化,然后在 Hangfire 处理作业时反序列化为
DownloadFileJob
对象,在这种情况下,将使用提供的参数在该对象方法上执行 ExecuteAsync()
。