#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}");
}