C# ASP.NET Core 5 | Hangfire
HTML-код
- Опубликовано: 15 июл 2024
- В данном видео мы разберёмся с распространённым способом запуска фоновых задач (background jobs) в ASP.NET Core 5. Будем рассматривать работу с библиотекой Hangfire. Это очень популярный пакет NuGet в современной web-разработке. Будет интересно.
Исходный код проекта на GitHub: github.com/codaza/Hangfire
Официальный сайт библиотеки Hangfire: www.hangfire.io
Telegram канал: t.me/codaza
На кофе ☕️: pay.cloudtips.ru/p/179d0532
Patreon: / codaza
Boosty: boosty.to/codaza
0:00 - Начало
0:30 - Background jobs
1:52 - NuGet Hangfire
2:14 - Топ возможностей Hangfire
4:02 - Открываем Visual Studio 2019
9:52 - Пример Fire-and-forget jobs
13:54 - Пример Delayed jobs
17:19 - Пример Recurring jobs
20:00 - Пример Continuations
23:34 - Завершение
#hangfire #csharp #aspnetcore #сишарп #netcore #monitoring #webapi #rest #restful
Удобная навигация по видео :)
0:00 - Начало
0:30 - Background jobs
1:52 - NuGet Hangfire
2:14 - Топ возможностей Hangfire
4:02 - Открываем Visual Studio 2019
9:52 - Пример Fire-and-forget jobs
13:54 - Пример Delayed jobs
17:19 - Пример Recurring jobs
20:00 - Пример Continuations
23:34 - Завершение
спасибо, как раз столкнулся с такой необходимостью. полно и без воды изложено. лайк подписка
Эталонное объяснение работы с хенгфайром ! Отдельный лайк за успокаивающую музыку, очень в тему. 👍
Очень полезный и качественно изложенный материал. Большое спасибо!
Максим, благодарю за положительный комментарий, это очень мотивирует на создание нового материала. Впереди много интересного :)
Мегаполезно! Спасибо большое.
Не много помучался, но все получилось спасибо.
Спасибо. Библиотеку Hangfire спер себе в коллекцию ))))
Рад, что обзор получился полезным. Сам очень люблю её использовать. Супер удобный и бесплатный функционал, да еще и open source.
Очень круто! Спасибо!
Пожалуйста 🙂 Спасибо Вам за комментарий.
Thanks it was very clear and concise!
You are welcome anytime!
лучший
спс за мануал!
Привет, чёткий видос. (Чтобы было на русском нужно кодировку поменять, например на utf-8)
Раскручивайся, плиз. Хорошо объясняешь. Спасибо.
Спасибо за высокую оценку :)
два раза заснул на этом видос
Спасибо за видео. Я так понимаю, чтобы активизировать background job из Hangfire, нужно вызвать метод сервиса. А есть ли возможность автоматической активации джоба (к примеру Recurring) при запуске сервиса? Т.е. чтобы при запуске такого сервиса джоб уже был запущен и работал. И можно ли в админке активировать джобы, которые еще не были вызваны в соответствующих методах? Можно ли в адмике управлять временем запуска отложенного джоба (например сдвинуть на минуту)?
Видео класс было полезно, но музыка фоном это лишнее.
Привет!
с Console.WriteLine() - понятно)) (слишком просто)
А вот, например, у меня движдок по генерации отчётов (отчёт строится долго). Куда должен быть задеплоен мой "репорт-сервис"?
Или я тригерю событие запуска генерации отчёта, и подписываюсь на событие завершения этой задачи?
Привет! Спасибо за отличный вопрос. Подходы к реализации "репорт-сервиса" могут быть разными. Ваш вариант тоже имеет место быть. В общем случае, архитектура может выглядеть так - клиент отправляет запрос на генерацию отчёта и подписывается на событие о завершении задачи (например, по id). Сервис отчётов выполняет генерацию и делает оповещение подписчиков на событие. Клиент, при получении оповещения, выполняет свою логику (например, высылает отчёт на e-mail).
Деплой "репорт-сервиса" можно сделать где вам удобно, например в Kubernetes в облаке.
@@codaza-channel спасибо за ответ!
а с Hangfire с SQLite можно работать?
Куль, а я все юзаю Microsoft.Extension.Hosting
Здесь конечно все получше.
А что будет если я добавлю во второй сервис hangfire который смотрит на ту же базу данных ? Он в старые таблицы будет смотреть верно ?
Да, сервисы будут подключаться к одной базе данных. Но это не очень хорошая практика, так как каждый сервис должен быть максимально автономным и иметь собственную базу данных, если это необходимо.
А есть документация по этой бибиотеке,ну или хотя бы о методах которые она содержит
?
Да, вот официальный сайт этой библиотеки: www.hangfire.io там можно прочитать обо всех подробностях.
@@codaza-channel Спасибо)
здравствуйте, можете дать ссылку на туториал по устоновке хенгфайра на console app (core), не смог найти адекатной инфы??
Здравствуйте! Да, вот подробное описание с официального сайта Hangfire: docs.hangfire.io/en/latest/background-processing/processing-jobs-in-console-app.html
@@codaza-channel спасибо большое за оперативный ответ, я сделал все согласно данной документации, но не понимаю как вывести интерфейс хенфайра (dashboard), не могли бы подсказать, на гите искал, но не смог найти имено по console app CORE
Вот здесь обсуждают этот вопрос: discuss.hangfire.io/t/how-to-access-hangfire-dashboard-when-jobs-are-setup-via-console-application/7559
@@codaza-channel спасибо, но решения как такового там нет. На гите хорошо описано, как пользоваться консольной версией, только для framework 4.5, вместе с выведением интерфейса, но так как главный проект у меня на CORE, то все время вылезают какие то ошибки, job-проект перевел на console app CORE , но теперь проблемы с выведением интерфейса((((((
Посмотрите еще тут: github.com/HangfireIO/Hangfire/issues/1181 Мне кажется, пользователь pieceofsummer даёт ответ на проблему.
а почему через IIS Express не работает??...заранее спасибо
Если у Вас есть необходимость в использовании IIS Express, Вы можете без проблем делать это. Просто выберете IIS Express в выпадающем списке и запустите проект. Скорее всего, в браузере у Вас откроется Swagger, URL будет выглядеть примерно так: localhost:44309/swagger Вам нужна админка Hangfire, для этого используйте такой URL: localhost:44309/dashboard Обратите внимание на порт, в моём случае это 44309. Если Вы хотите, чтобы ссылка с админкой Hangfire открывалась по умолчанию, зайдите в конфигурационный файл в launchSettings.json и в параметре "launchUrl" поменяйте значение "swagger" на "dashboard" для профиля "IIS Express". Обязательно сделайте полное сохранение проекта (Ctrl+Shift+S) и rebuild (Ctrl+Shift+B), иначе конфигурационный файл launchSettings.json может не примениться с первого раза.
@@codaza-channel спасибо большое
Когда выйдет продолжение?
Продолжение темы Hangfire не планировалось. Продолжение чего Вы ожидаете?
@@codaza-channel elastik, logstash, kibana
Cron.Daily, но вызов через 2 часа, это как? 18:50+
Когда мы задаём значение интервала повтора, берётся некоторый отступ от времени создания задачи. В нашем случае, отступ составил 2 часа. То есть, в расписании мы видим, что очередное исполнение задачи произойдёт через 2 часа. Если бы мы выбрали не Cron.Daily, а Cron.Minutely (каждую минуту), то отступ составил бы несколько секунд. В любом случае, расписание будет строго исполнено и, если задаче надлежит быть исполненной раз в сутки, она будет исполнена раз в сутки.
@@codaza-channel спасибо за ответ! пересмотрел все видео вчера за один присест, крутая подача и никакой воды