Hangfire Это платформа планирования задач .NET с открытым исходным кодом. В настоящее время версия 1.6+ поддерживает .NET. Основной. Его самая большая особенность заключается в том, что он предоставляет встроенную интегрированную консоль для облегчения фонового просмотра и мониторинга:
Кроме того, Hangfire включает в себя три основных компонента: клиент, постоянное хранилище и сервер. Официальная схема представления процесса выглядит следующим образом:
Как видно из рисунка, эти три основных компонента можно разделить и развернуть отдельно. Например, можно развернуть несколько сервисов Hangfire, чтобы повысить производительность обработки фоновых задач. Что касается постоянного хранилища задач, оно поддерживает Sqlserver, MongoDb, Mysql или Redis и т. д.
1. Создайте новый проект net5 и добавьте пакет зависимостей при зависании в nuget.
<PackageReference Include="Hangfire" Version="1.7.18" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.18" />
<PackageReference Include="Hangfire.Console" Version="1.4.2" />
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
<PackageReference Include="Hangfire.HttpJob" Version="3.5.3" />
<PackageReference Include="Hangfire.SqlServer" Version="1.7.18" />
<PackageReference Include="Hangfire.Tags.SqlServer" Version="1.7.0" />
2. Настройте службу и запустите ее в Startup.cs.
Метод Конфигуре Сервисс
services.AddHangfire(configura =>
{
//Указываем носитель данных
configura.UseSqlServerStorage("Data Source=ZXL; Database=Hangfire.Sample; User ID=sa; Password=123456; Integrated Security=True;", new SqlServerStorageOptions() //Введение в Nuget:
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true,
UsePageLocksOnDequeue = true,
DisableGlobalLocks = true
}).UseTagsWithSql()//nugetпредставлятьHangfire.Tags.SqlServer .UseConsole(new ConsoleOptions()
{
BackgroundColor = "#000079"
}).UseHangfireHttpJob();
});
Data Source Имя компьютера
Database Вам нужно сначала собрать пустую базу Hangfire.Пример базы данных
Как настроить
app.UseHangfireServer();//Запуск HangfireServer
app.UseHangfireDashboard("/hangfire"
); //Поддержка интерфейса предварительного просмотра --- Доступ может получить любой пользователь, поэтому необходимо добавить барьер;
Комментировать
//app.UseEndpoints(endpoints =>
//{
// endpoints.MapGet("/", async context =>
// {
// await context.Response.WriteAsync("Hello World!");
// });
//});
4. В корневом каталоге запускаем cmd dotnet
5. Откройте порт прослушивания +/hangfire на URL-адресе веб-страницы.
http://localhost:5000/hangfire
В это время открывается визуальный интерфейс Hangfire.
С точки зрения устойчивости соответствующая база данных генерирует таблицу БД. ——Это также означает, что Hangfire может сохранять данные задачи в БД.
1. Здесь предполагается, что мы хотим выполнить веб-задачу на визуальной странице Hangfire (здесь мы используем проект webapi, который я создал в предыдущей статье)
http://localhost:52216/api/V1/First
2. На странице визуализации Hangfire мы следуем инструкциям ниже и вводим шаг 4.
Мы изменяем значения параметров внутри, таких как JobName, Url, Method и т. д., а затем отправляем их.
После завершения задачи она появится в списке «Завершено». Нажмите на синий номер, например №3, №2, №1, и мы сможем увидеть некоторую информацию о выполнении задачи.
app.UseHangfireDashboard("/hangfire", new DashboardOptions()
{
Authorization = new BasicAuthAuthorizationFilter[] {
new BasicAuthAuthorizationFilter(new BasicAuthAuthorizationFilterOptions(){
SslRedirect=false,
RequireSsl=false,
Users=new BasicAuthAuthorizationUser[]{
new BasicAuthAuthorizationUser(){
Login="admin",
PasswordClear="test"
}
}
})
}
}); //Поддержка интерфейса предварительного просмотра --- Доступ может получить любой пользователь, поэтому необходимо добавить барьер;
Пожалуйста, перейдите по этому адресу, чтобы увидеть подробности https://github.com/yuzd/Hangfire.HttpJob.