hangfire - 多个hangfire仪表板并同时在同一台服务器上处理
问题描述
我们有一种情况,我们的登台和生产实例位于同一台服务器上(使用单个 IIS)。因此,我们在这台电脑上安装了一个挂火服务器,用于暂存和管理生产。
但是,我们不能同时运行我们的暂存版本和生产版本的hang-fire,因为存在冲突,因此我们需要始终停止其中一个。
这两种处理都适用于不同的数据库并处理配置文件配置的不同项目。
无论如何,在同一台服务器上基本上有 2 个 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}");
}
推荐阅读
- python - 错误:urllib2.URLError:
- sql - 包含 SQL + Active Record 的 Rails 迁移产生语法错误
- powershell - 在 PowerShell 中运行外部命令以进行章鱼部署
- reactjs - 如何从函数中调用组件
- excel - 如何仅将数据粘贴到可见单元格?
- javascript - 如何一次在d3中设置多个样式属性
- javascript - Cytoscape js 阻止输入标签的 onChange 函数
- python - 如何修复 Tkinter?每个带有 GUI 的代码都会使 mac os 崩溃并重新启动
- python - 即使有些是空的,我是否应该始终完成所有条件?
- asp.net-mvc - 如何在母版页中使用 Html.RenderPartial?