问题标签 [hangfire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8680 浏览

asp.net - 来自 Newtonsoft.Json.Serialization 的异常

我正在将 Hangfire 集成到我的项目中。我在 BackgroundJob.Enqueue 中得到了 Newtonsoft.Json.Serialization 的异常,如下所示。谁能告诉我如何解决这个问题?

检测到类型为“ASP.global_asax”的属性“ApplicationInstance”的自引用循环。路径'NamingContainer.Page.ModelBindingExecutionContext.HttpContext.ApplicationInstance.Context'。

在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter 编写器,对象值,JsonProperty 属性,JsonContract 合同,JsonContainerContract containerContract,JsonProperty containerProperty)在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter 编写器,对象值,JsonContainerContract 合同,JsonProperty Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (JsonWriter 编写器,对象值,JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternal.Writer SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at牛顿软件。Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer,Object value,JsonContract valueContract,JsonProperty member,JsonContainerContract containerContract,JsonProperty containerProperty)在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer,Object value,JsonObjectContract contract,JsonProperty member,JsonContainerContract collectionContract, JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value , JsonObjectContract 合约, JsonProperty 成员,JsonContainerContract collectionContract, JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) 在 Newtonsoft.Json.Serialization. JsonSerializerInternalWriter。SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty) at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType) 在 Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType) 在 Newtonsoft.Json.JsonConvert.SerializeObject(Object value, Type类型,格式化格式化,JsonSerializerSettings 设置)在 Hangfire.Common.Job。Hangfire.Common.Job.FromExpression(Expression) 处的 GetArguments(MethodCallExpression callExpression)1 methodCall) at Hangfire.BackgroundJobClientExtensions.Create(IBackgroundJobClient client, Expression1 methodCall,IState 状态)在 Hangfire.BackgroundJobClientExtensions.Enqueue(IBackgroundJobClient 客户端,表达式1 methodCall) at Hangfire.BackgroundJob.Enqueue(Expression1 methodCall)

0 投票
1 回答
6003 浏览

sql-server - SQL Server 的 Hangfire 配置

我正在编写一个 MVC 5 互联网应用程序,并希望Hangfire用于重复性任务。

我如何设置Hangfire使用SQL Server storage而不在Startup.Auth ConfigureAuth(IAppBuilder app)函数中指定它。

这是 SQL Server 配置的资源链接:http: //docs.hangfire.io/en/latest/configuration/using-sql-server.html

该资源指出:

如果要在不适用 OWIN Startup 类的 Web 应用程序之外使用 Hangfire,请手动创建 SqlServerStorage 实例并将其传递给 JobStorage.Current 静态属性。参数是一样的。

示例代码如下:

我尝试了以下代码(使用我自己的连接字符串),但仪表板不可用。我已经从控制器函数中调用了上面的代码。

有什么我没有做对的吗?如何在不使用类的情况下设置Hangfire使用?SQL Server storageStartup.Auth

提前致谢。

0 投票
2 回答
4367 浏览

c# - “从池中获取连接时超时。” Hangfire.Postgres

我是 Hangfire 的新手,所以可能我在某个地方搞砸了。我的 Hangfire 配置如下:https ://github.com/HangfireIO/Hangfire#installation

但不是:

我有:

所以我在我的数据库中创建了一个 Hangfire 数据库。

然后,我正在构建和运行我的项目。没关系。在我的 postgres 中创建 Hangfire DB 中的所有表。它工作得很好。

但是,当我尝试时:

我收到 InnerMessage 异常:

我错过了什么吗?

0 投票
1 回答
3084 浏览

c# - hangfire 作业激活和 Autofac 的问题

我正在尝试在我的项目中实施hangfire。当我将 RecurringJob 添加到 hangfire 时,我遇到了一个问题,当它被触发时,我收到此错误:

Autofac.Core.Registration.ComponentNotRegisteredException

请求的服务“XXXX.Services.ScheduleTasks.RepairNotificationSevice”尚未注册。为避免此异常,请注册组件以提供服务,使用 IsRegistered() 检查服务注册,或使用 ResolveOptional() 方法解决可选依赖项。

我已经安装了hangfire 和hangfire.autofac。我在 Startup.cs 中添加了 hangfire 配置,但我的 ContainerBuilder 数据在另一个文件中。我的 startup.cs 文件如下所示:

它不起作用。我已经检查在 var builder 和 config.UseAutofacActivator 之间粘贴所有容器构建器数据,但没有结果。我的 Autofac 配置位于从 Global.asax 调用的名为“Bootstrapper.cs”的文件中。我该如何解决这个问题?谢谢

0 投票
1 回答
706 浏览

hangfire - 我们可以用 Hangfire 创建一个无限的工作/任务(有点像 Azure Worker 角色)吗?

我想知道我们是否可以使用 Hangfire 创建无限的工作/任务(类似于 Azure Worker 角色)。我想使用 Hangfire 计划作业(每 4 小时)在 Azure 队列中对电子邮件进行排队,然后运行无限 Hangfire 火灾并忘记作业/任务(当网站启动时)来处理(出列)每封电子邮件并将其发送到 Amazon SES每 200 毫秒(每秒 5 封电子邮件)。无限作业需要一直启动才能处理新的队列电子邮件。

因此,在性能方面是否可以这样做,然后如何管理可能停止无限工作的潜在错误以及如何在需要时重新启动它。在无限循环作业中,我还应该为每封电子邮件创建新的火灾并忘记任务,以便有可能对每封电子邮件进行其他重试尝试。我的 Hangfire 服务器将托管在 Azure 网站中。

最后,我这样做是因为 Amazon SES 无法对电子邮件进行排队。我的 Amazon AWS 订阅授权我每秒发送 15 封电子邮件。

希望清楚,谢谢

0 投票
1 回答
997 浏览

asp.net-mvc - OWIN异步启动(使用Hangfire)

我在远程 SQL 服务器上使用 Hangfire 和 SQL 存储,并在我现有的 MVC 站点旁边运行它。我的启动类很简单:

问题是连接到远程服务器的任何延迟都会延迟我的 MVC 站点启动。有没有办法异步启动 OWIN,以便项目能够响应请求,而不管 OWIN 启动期间发生了什么,包括致命错误?

0 投票
2 回答
8670 浏览

job-scheduling - 取消使用 Hangfire.io 安排的正在运行的作业

我使用 hangfire.io 库安排作业,我可以观察到它正在内置仪表板中进行处理。但是,我的系统要求可以从仪表板取消作业。

有一个删除正在运行的作业的选项,但这只会改变数据库中作业的状态,不会停止正在运行的作业。

我在文档中看到有一个选项可以通过,IJobCancellationToken但是据我了解,它用于在整个服务器关闭时正确停止作业。

有没有办法以编程方式取消已经运行的任务?

我是否应该编写自己的组件来定期提取数据库并检查当前服务器实例是否正在运行已被取消的作业?例如维护字典 jobId -> CancellationTokenSource,然后使用适当的令牌源发出取消信号。

0 投票
1 回答
11586 浏览

c# - HangFire 重复任务数据

我正在编写一个 MVC 5 互联网应用程序并HangFire用于重复性任务。

如果我有一个每月循环任务,我如何获得下一次执行时间的值?

这是我的重复任务代码:

我可以按如下方式检索工作数据:

但是,我不确定下一步该做什么。

是否可以获得重复任务的下一个执行时间?

提前致谢。

0 投票
0 回答
263 浏览

c# - 将后台处理迁移到 Hangfire

我有一个 Web 应用程序,它由 1 个 Web 角色和 1 个工作角色实例组成。webrole 基本上是在 blob 存储上聚合一些 blob,worker 来扫描存储的文件并处理它们。

问题是如果我要使用 2 个工作角色实例,可能会出现一些重复的结果,因为只有在成功处理后才会删除 blob。为了避免这种情况,我决定使用 Hangfire。

我打算做的是,当 Web 角色收到请求时,它不仅会将文件保存到 blob 存储,而且还会将该文件的处理任务排入队列。然后 Hangfire 工作线程将处理它。

这就提出了另一个问题:我应该在哪里部署hangfire?

如果我将 hangfire 部署到 Web 角色实例上,我将能够访问 UI,因为它具有 IIS,但我将无法将用于后台处理的资源与 Web 角色本身隔离开来。如果我将它部署到辅助角色实例上,它将无法为 UI 提供服务,因为没有 IIS。

有没有办法让 Web 角色实例触发任务但让工作实例查找并使用它们?如果是这样,怎么做?

0 投票
1 回答
245 浏览

c# - Ninject 删除/替换 InThreadScope 对象实例

我有一个实体框架上下文被注入到后台作业中(由 Hangfire.io 处理)。Hangfire 为每个后台工作人员生成线程......但在同一个工作人员上运行多个作业。所以我的 EF 上下文可能会保留很长时间。

我想在执行结束时删除 Job 线程的 Ninject 实例。从而导致它在同一线程中为该类型的下一个分辨率创建一个新实例。

如何从 Ninject 的 InThreadScope 中删除实例?