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

时间:2020-09-06 23:25:48

标签: hangfire

在某些情况下,我们的登台实例和生产实例位于同一台服务器上(使用单个IIS)。因此,我们在这台PC上安装了一个挂机服务器,用于暂存和管理生产。

但是,由于存在冲突,我们不能同时运行暂存和生产版本的hang-fire,因此我们必须始终停止运行。

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

反正在同一服务器上基本上有2个hangfire仪表板和相关处理吗?

1 个答案:

答案 0 :(得分:0)

所以我的问题略有偏离。不是我们需要在其他端口上运行的hangfire,而是托管它的过程。

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

host.RunAsService();

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

我们需要做的是配置主机服务器以在不同端口上运行这些实例。通过将端口配置添加到我们的appsettings中并进行相应的设置,我们能够做到这一点。然后,我们可以在启动过程中阅读该信息以配置使用的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}");
    }