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

Комментарии • 47

  • @codaza-channel
    @codaza-channel  2 года назад +9

    Удобная навигация по видео :)
    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 - Завершение

  • @aka76aka
    @aka76aka 2 года назад +4

    спасибо, как раз столкнулся с такой необходимостью. полно и без воды изложено. лайк подписка

  • @alexlightweight
    @alexlightweight Год назад +1

    Эталонное объяснение работы с хенгфайром ! Отдельный лайк за успокаивающую музыку, очень в тему. 👍

  • @user-gq8of6kd4r
    @user-gq8of6kd4r 2 года назад +5

    Очень полезный и качественно изложенный материал. Большое спасибо!

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Максим, благодарю за положительный комментарий, это очень мотивирует на создание нового материала. Впереди много интересного :)

  • @user-bz5kg2yw7m
    @user-bz5kg2yw7m 2 года назад +2

    Мегаполезно! Спасибо большое.

  • @AlexanderYablonsky-un5xy
    @AlexanderYablonsky-un5xy Год назад

    Не много помучался, но все получилось спасибо.

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p 2 года назад +2

    Спасибо. Библиотеку Hangfire спер себе в коллекцию ))))

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Рад, что обзор получился полезным. Сам очень люблю её использовать. Супер удобный и бесплатный функционал, да еще и open source.

  • @DimonSmart
    @DimonSmart 2 года назад +1

    Очень круто! Спасибо!

    • @codaza-channel
      @codaza-channel  2 года назад

      Пожалуйста 🙂 Спасибо Вам за комментарий.

  • @NickPavlov00
    @NickPavlov00 2 года назад +1

    Thanks it was very clear and concise!

  • @ashotrustavelyan7498
    @ashotrustavelyan7498 2 года назад +1

    лучший

  • @grotsunfull
    @grotsunfull 2 года назад +1

    спс за мануал!

  • @Happy-vl7ol
    @Happy-vl7ol 2 года назад +2

    Привет, чёткий видос. (Чтобы было на русском нужно кодировку поменять, например на utf-8)

  • @fillmike
    @fillmike 2 года назад +2

    Раскручивайся, плиз. Хорошо объясняешь. Спасибо.

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Спасибо за высокую оценку :)

  • @ANTONZUBAREV
    @ANTONZUBAREV 3 месяца назад

    два раза заснул на этом видос

  • @stelvvt
    @stelvvt Год назад +4

    Спасибо за видео. Я так понимаю, чтобы активизировать background job из Hangfire, нужно вызвать метод сервиса. А есть ли возможность автоматической активации джоба (к примеру Recurring) при запуске сервиса? Т.е. чтобы при запуске такого сервиса джоб уже был запущен и работал. И можно ли в админке активировать джобы, которые еще не были вызваны в соответствующих методах? Можно ли в адмике управлять временем запуска отложенного джоба (например сдвинуть на минуту)?

  • @AlexanderYablonsky-un5xy
    @AlexanderYablonsky-un5xy Год назад

    Видео класс было полезно, но музыка фоном это лишнее.

  • @DevStoriesAndTutorials
    @DevStoriesAndTutorials 2 года назад +2

    Привет!
    с Console.WriteLine() - понятно)) (слишком просто)
    А вот, например, у меня движдок по генерации отчётов (отчёт строится долго). Куда должен быть задеплоен мой "репорт-сервис"?
    Или я тригерю событие запуска генерации отчёта, и подписываюсь на событие завершения этой задачи?

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Привет! Спасибо за отличный вопрос. Подходы к реализации "репорт-сервиса" могут быть разными. Ваш вариант тоже имеет место быть. В общем случае, архитектура может выглядеть так - клиент отправляет запрос на генерацию отчёта и подписывается на событие о завершении задачи (например, по id). Сервис отчётов выполняет генерацию и делает оповещение подписчиков на событие. Клиент, при получении оповещения, выполняет свою логику (например, высылает отчёт на e-mail).
      Деплой "репорт-сервиса" можно сделать где вам удобно, например в Kubernetes в облаке.

    • @DevStoriesAndTutorials
      @DevStoriesAndTutorials 2 года назад +1

      @@codaza-channel спасибо за ответ!

  • @user-yo7mw6oj4p
    @user-yo7mw6oj4p 6 месяцев назад

    а с Hangfire с SQLite можно работать?

  • @artemadeev7444
    @artemadeev7444 2 года назад

    Куль, а я все юзаю Microsoft.Extension.Hosting
    Здесь конечно все получше.
    А что будет если я добавлю во второй сервис hangfire который смотрит на ту же базу данных ? Он в старые таблицы будет смотреть верно ?

    • @codaza-channel
      @codaza-channel  2 года назад

      Да, сервисы будут подключаться к одной базе данных. Но это не очень хорошая практика, так как каждый сервис должен быть максимально автономным и иметь собственную базу данных, если это необходимо.

  • @ITaras
    @ITaras 2 года назад +1

    А есть документация по этой бибиотеке,ну или хотя бы о методах которые она содержит
    ?

    • @codaza-channel
      @codaza-channel  2 года назад

      Да, вот официальный сайт этой библиотеки: www.hangfire.io там можно прочитать обо всех подробностях.

    • @ITaras
      @ITaras 2 года назад +1

      @@codaza-channel Спасибо)

  • @iraklinikoleishvili4260
    @iraklinikoleishvili4260 2 года назад

    здравствуйте, можете дать ссылку на туториал по устоновке хенгфайра на console app (core), не смог найти адекатной инфы??

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Здравствуйте! Да, вот подробное описание с официального сайта Hangfire: docs.hangfire.io/en/latest/background-processing/processing-jobs-in-console-app.html

    • @iraklinikoleishvili4260
      @iraklinikoleishvili4260 2 года назад

      @@codaza-channel спасибо большое за оперативный ответ, я сделал все согласно данной документации, но не понимаю как вывести интерфейс хенфайра (dashboard), не могли бы подсказать, на гите искал, но не смог найти имено по console app CORE

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Вот здесь обсуждают этот вопрос: discuss.hangfire.io/t/how-to-access-hangfire-dashboard-when-jobs-are-setup-via-console-application/7559

    • @iraklinikoleishvili4260
      @iraklinikoleishvili4260 2 года назад

      @@codaza-channel спасибо, но решения как такового там нет. На гите хорошо описано, как пользоваться консольной версией, только для framework 4.5, вместе с выведением интерфейса, но так как главный проект у меня на CORE, то все время вылезают какие то ошибки, job-проект перевел на console app CORE , но теперь проблемы с выведением интерфейса((((((

    • @codaza-channel
      @codaza-channel  2 года назад +1

      Посмотрите еще тут: github.com/HangfireIO/Hangfire/issues/1181 Мне кажется, пользователь pieceofsummer даёт ответ на проблему.

  • @ashotrustavelyan7498
    @ashotrustavelyan7498 2 года назад

    а почему через IIS Express не работает??...заранее спасибо

    • @codaza-channel
      @codaza-channel  2 года назад +3

      Если у Вас есть необходимость в использовании 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 может не примениться с первого раза.

    • @iraklinikoleishvili4260
      @iraklinikoleishvili4260 2 года назад +1

      @@codaza-channel спасибо большое

  • @brownweb9
    @brownweb9 2 года назад +1

    Когда выйдет продолжение?

    • @codaza-channel
      @codaza-channel  2 года назад

      Продолжение темы Hangfire не планировалось. Продолжение чего Вы ожидаете?

    • @user-tf5ks6kq5b
      @user-tf5ks6kq5b 2 года назад

      @@codaza-channel elastik, logstash, kibana

  • @Pixch
    @Pixch 2 года назад

    Cron.Daily, но вызов через 2 часа, это как? 18:50+

    • @codaza-channel
      @codaza-channel  2 года назад +2

      Когда мы задаём значение интервала повтора, берётся некоторый отступ от времени создания задачи. В нашем случае, отступ составил 2 часа. То есть, в расписании мы видим, что очередное исполнение задачи произойдёт через 2 часа. Если бы мы выбрали не Cron.Daily, а Cron.Minutely (каждую минуту), то отступ составил бы несколько секунд. В любом случае, расписание будет строго исполнено и, если задаче надлежит быть исполненной раз в сутки, она будет исполнена раз в сутки.

    • @Pixch
      @Pixch 2 года назад +1

      @@codaza-channel спасибо за ответ! пересмотрел все видео вчера за один присест, крутая подача и никакой воды