我正在使用 Windows 服务在 Spring.NET 集成的帮助下运行 Quartz.NET 作业。
我面临以下两个问题:
我不断地添加/删除工作(为新的业务对象使用新的 spring.net 配置)。这意味着我每次都需要停止 Windows 服务和正在运行的作业。
此外,这些作业需要很长时间才能执行,因此最好让多台服务器分别执行我在一个中心位置配置的作业。
你会如何建议实现这 2 个功能?
我正在使用 Windows 服务在 Spring.NET 集成的帮助下运行 Quartz.NET 作业。
我面临以下两个问题:
我不断地添加/删除工作(为新的业务对象使用新的 spring.net 配置)。这意味着我每次都需要停止 Windows 服务和正在运行的作业。
此外,这些作业需要很长时间才能执行,因此最好让多台服务器分别执行我在一个中心位置配置的作业。
你会如何建议实现这 2 个功能?
AFAIK 如果不编写代码以将调度程序加载到单独的应用程序域中,然后自己管理应用程序域,就无法做到 #1。这在 Quartz.Net 发行版中不可用,所以你必须自己做。
对于第 2 项,您可以设置集群石英服务器,这将解决该问题。您将需要使用数据库存储来设置要集群的调度程序。
如果您不想设置石英集群服务器,另一个建议是推出您自己的基于简单队列的架构。拥有一个轻量级调度程序服务,将您的作业推送到一个队列(AWS/Azure 队列运行良好),然后是一个可以使用这些作业的工作人员池。我在更改石英计划时遇到了类似的问题,并且发现当我不必担心在石英线程中运行的长时间运行的进程时管理石英更容易。如果您确实需要在请求更改后停止工作,这可能对您不起作用。