多个 hangfire 仪表板并同时在同一台服务器上处理

Multiple hangfire dashboards and processing on the same server at the same time

我们的暂存实例和生产实例位于同一台服务器上(使用单个 IIS)。因此,我们在这台电脑上安装了一台挂火服务器,用于暂存和管理生产。

但是我们不能同时拥有暂存版本和生产版本的 hang-fire 运行,因为存在冲突,因此我们需要始终停止一个。

这两种处理都适用于不同的数据库,并处理由配置文件配置的不同项目。

有没有办法在同一台服务器上基本上有 2 个 hangfire 仪表板和相关处理?

所以我的问题有点离题了。这不是 hangfire 我们需要 运行 在不同的端口上,而是用于托管它的进程。

在这种情况下,我们运行将 hangfire 作为 windows 服务。

host.RunAsService();

但是,默认情况下它使用端口 5000。因此当我们有 2 个 windows 服务时 运行ning 他们在这个端口上发生冲突。

我们需要做的是将我们的主机服务器配置为 运行 这些实例在不同的端口上。我们能够通过向我们的应用程序设置添加端口配置并进行相应设置来做到这一点。然后我们可以在启动期间读取它以配置使用什么Url。

    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", optional: true); //this is not needed, but could be useful

        var settings = new ProcessingSettings();
        config.Build().GetSection("ProcessingSettings").Bind(settings);

        return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseUrls($"http://*:{settings.Port}");
    }