使用HangFire使用相同的类实例



我正在使用hangfire来调度每分钟运行一次的作业。在同一类,我有工作要运行有一个队列,我需要访问和更新它的内部值。问题是每次hangfire执行作业时,它都会使用队列为空的类的新实例。我已经在startup.cs中添加了一个单例类。所有我需要做的是保持相同的队列,并改变队列对象内的一些字符串。什么好主意吗?非常感谢你的时间!

Hangfire逻辑是分布式的。作业可以在任何后台作业服务器上进行处理(可以有多个后台作业服务器)。因此,您不能假设有一个共享对象实例,它将从任何地方更新。为了实现这个目标,你需要一个共享存储(如共享缓存或数据库)和某种形式的通知来提醒所有的应用程序值已经改变了。

注意,如果你只有一个hangfire客户端和一个hangfire服务器,它们都运行在同一个应用程序中,你可以实现你的目标。这可以通过将队列存储在静态变量中,或者在队列的单例作用域上使用依赖注入来实现。但我认为这将严重限制你的架构,你会失去Hangfire的大部分意义。

最新更新