首页 > 解决方案 > 多个hangfire仪表板并同时在同一台服务器上处理

问题描述

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

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

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

无论如何,在同一台服务器上基本上有 2 个 hangfire 仪表板和相关处理吗?

标签: hangfire

解决方案


所以我的问题有点不对劲。我们需要在不同的端口上运行的不是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}");
    }

推荐阅读