Примерно так:
- Я регистрирую класс в IoC.
- Фреймворк заботится обо всех зависимостях, которые нужны моему классу.
- Затем я хотел бы использовать Hangfire для запуска метода из этого зарегистрированного класса со всеми зависимости разрешаются платформой.
Код: Выделить всё
builder.Services.AddHangfire(config => config
.SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
.UseSimpleAssemblyNameTypeSerializer()
.UseDefaultTypeSerializer()
.UseInMemoryStorage());
builder.Services.AddHangfireServer();
Код: Выделить всё
builder.Services.AddKeyedScoped(nameof(MappingTask));
builder.Services.AddKeyedScoped(nameof(StoringTask));
builder.Services.AddScoped();
builder.Services.AddKeyedScoped(nameof(MappingStoringGroup), (provider, key) =>
{
var taskGroup = new MappingStoringGroupBuilder()
.AddTask(provider.GetRequiredKeyedService(nameof(MappingTask)))
.AddTask(provider.GetRequiredKeyedService(nameof(StoringTask)))
.CreateTaskGroup();
return taskGroup;
});
Код: Выделить всё
app.UseHangfireDashboard();
RecurringJob.AddOrUpdate("job id", nameof(MappingStoringGroup), tg => tg.RunTasks(), Cron.Hourly);
app.Run();
Я пытался использовать Hangfire во время регистрации MappingStoringGroup.< /p>
Например:
Код: Выделить всё
builder.Services.AddKeyedScoped(nameof(MappingStoringGroup), (provider, key) =>
{
var taskGroup = new MappingStoringGroupBuilder()
.AddTask(provider.GetRequiredKeyedService(nameof(MappingTask)))
.AddTask(provider.GetRequiredKeyedService(nameof(StoringTask)))
.CreateTaskGroup();
RecurringJob.AddOrUpdate("job id", () => taskGroup.RunTasks(), Cron.Hourly);
return taskGroup;
});
Подробнее здесь: https://stackoverflow.com/questions/788 ... p-net-core
Мобильная версия