Несколько панелей мониторинга hangfire и одновременная обработка на одном сервере

#hangfire

#hangfire

Вопрос:

У нас есть ситуация, когда наш промежуточный и производственный экземпляры находятся на одном сервере (с использованием одного IIS). Следовательно, у нас есть сервер hang-fire, установленный на этом компьютере для промежуточной обработки и управления производством.

Однако мы не можем одновременно запускать как нашу промежуточную, так и нашу производственную версию hang-fire, поскольку возникают конфликты, поэтому нам нужно постоянно останавливать одну из них.

Обе эти обработки будут работать с разными базами данных и обрабатывать разные элементы, настроенные конфигурационными файлами.

Есть ли в любом случае возможность иметь в основном 2 панели мониторинга hangfire и связанную с ними обработку на одном сервере?

Ответ №1:

Итак, мой вопрос был немного отклонен. Нам нужно было запустить не hangfire на другом порту, а процесс, который используется для его размещения.

В этом случае мы запускаем hangfire как службу Windows.

 host.RunAsService();
  

Однако по умолчанию он использовал порт 5000. Итак, когда у нас были запущены 2 службы Windows, они конфликтовали на этом порту.

Что нам нужно было сделать, так это настроить наш хост-сервер для запуска этих экземпляров на разных портах. Мы смогли сделать это, добавив конфигурацию порта в наши настройки приложений и настроив ее соответствующим образом. Затем мы можем прочитать это во время запуска, чтобы настроить, какой 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}");
    }