【发布时间】:2018-01-01 08:05:21
【问题描述】:
我在为多租户应用程序添加 Hangfire 服务器时遇到问题。在我的应用程序启动中,我遍历所有租户并为每个租户初始化和添加一组作业。它在每个租户数据库中添加服务器,但作业仅添加到第一个租户数据库。我在其他租户数据库和仪表板中看不到任何工作。以下是我正在尝试的代码:
foreach (var tenant in TenantConvention.GetTenants())
{
GlobalConfiguration.Configuration
.UseSqlServerStorage(DbServer.GetConnectionString(tenant));
var sqlStorage = new SqlServerStorage(DbServer.GetConnectionString(tenant));
app.UseHangfireDashboard($"/dashboard/{tenant}-Jobs", new DashboardOptions
{
Authorization = new[] { new HangfireAuthFilter() }
}, sqlStorage);
var options = new BackgroundJobServerOptions
{
ServerName = tenant//string.Format("{0}.{1}", tenant, Guid.NewGuid().ToString())
};
var jobStorage = JobStorage.Current;
app.UseHangfireServer(options, jobStorage);
var schedulars = ObjectFactory.GetAllInstances();
foreach (var schedular in schedulars) {
schedular.Init();
}
}
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
我认为你应该使用
BackgroundJobServerOptions -
我正在使用它。您有如何在这种情况下使用它的示例。 @阿里亚
-
我也在使用 Hangfire,但我没有使用这种方法,但我也在寻找这种方法......试图提供帮助。
-
好的,谢谢@Aria
-
如您所知,您将
GlobalConfiguration的SQL 服务器存储配置为第一个tanent连接,因此所有作业都将在第一个数据库中创建。
标签: c# asp.net-mvc multi-tenant hangfire