运行多个服务实例¶

自1.5后就过时了

在Hangfire 1.5之后,您不需要额外的配置来支持多个服务实例处理同一个后台任务,可以跳过本文了。现在使用GUID生成服务器标识符,因此所有实例名称都是唯一的。

可以同时在一个程序、机器或多台机器上运行多个服务器实例。每个服务实例使用分布式锁来执行协调逻辑。

在上述情况中,每个Hangfire服务器都有一个唯一的由两部分组成的供默认值标识符。最后一部分是一个程序标识,用于区别同一台机器上的多个服务实例。前一部分是 服务名称,默认为机器名,保证不同机器的唯一性。例如: server1:9853server1:4531server2:6742

由于默认值只是在程序级别提供唯一性,因此如果要在同一程序内运行不同的服务实例,则应手动处理它们:

  1. var options = new BackgroundJobServerOptions
  2. {
  3. ServerName = String.Format(
  4. "{0}.{1}",
  5. Environment.MachineName,
  6. Guid.NewGuid().ToString())
  7. };
  8.  
  9. var server = new BackgroundJobServer(options);
  10.  
  11. // or
  12.  
  13. app.UseHangfireServer(options);

原文:

http://hangfirezh.zhs.press/background-processing/running-multiple-server-instances.html