The Only .NET Scheduler You Should Be Using!

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น • 213

  • @Sirozha1337
    @Sirozha1337 7 หลายเดือนก่อน +131

    The title of the video sounds like a clickbait. I think you need a comparison video why is it better than other similar libraries, e.g. Quartz, Coravel, FluentScheduler.

    • @ThugLifeModafocah
      @ThugLifeModafocah 7 หลายเดือนก่อน +6

      Agree.

    • @LuisAlonzoRivero
      @LuisAlonzoRivero 7 หลายเดือนก่อน +7

      Quartz FTW!

    • @DanBottiglieri
      @DanBottiglieri 7 หลายเดือนก่อน +10

      I love Nick and pretty much watch all his videos but bless him, he does love the clickbait titles and images.

    • @Daniel15au
      @Daniel15au 7 หลายเดือนก่อน

      For a small site where you don't need fancy features, Coravel is the easiest one to use by far. I love it.

    • @sabientje65
      @sabientje65 7 หลายเดือนก่อน +14

      Nick almost always uses clickbait titles. Often has the opposite effect on me making me not watch his videos lmao.

  • @stochastic84
    @stochastic84 7 หลายเดือนก่อน +56

    Quartz is extremely reliable and works very well. Hangfire is a very heavy dependency, I'd only adopt it if I really needed it.

  • @injenius21
    @injenius21 8 หลายเดือนก่อน +105

    Hangfire is solid but you should try Quartz. Over time I have replaced hangfire with Quartz in most of my projects. I find the extensibility and performance better

    • @danilonotsys
      @danilonotsys 7 หลายเดือนก่อน +6

      Perfect comment. Even to do a simple benchmark Hangfire can be a pain due to its heavy static based usage. But after looking into the source code and managing to find its proper instance structures to benchmark I have found that Quartz performs much better. Hangfire also seems to have some kind of internal process that runs from time to time that causes some hanging and delays the scheduled tasks by some seconds (up to 20s)

    • @adedoyinphilip8647
      @adedoyinphilip8647 7 หลายเดือนก่อน +5

      Hang fire doesn't do well in a containerized environment. The workers stops working at some point and that affects recurring tasks.
      quartz is better especially in containerized environment.

    • @da3dsoul
      @da3dsoul 7 หลายเดือนก่อน +4

      Quartz is in the middle of a rewrite for nosql and other improvements, though, so support is currently slow or lacking

    • @amrswalha
      @amrswalha 7 หลายเดือนก่อน

      Totally agree, Hangfire almost the same no updates or major enhancements for many years. Quartz does the job and more.

    • @tyomidi
      @tyomidi 7 หลายเดือนก่อน +2

      Also agree, I would never recommend Hangfire over Quartz unless a commercial support contract was mandatory.

  • @heischono4917
    @heischono4917 7 หลายเดือนก่อน +35

    Thanks for the video. Can you do a comparison of Hangfire, Coravel and Quartz, please?

  • @ikenwakochukwudi9395
    @ikenwakochukwudi9395 7 หลายเดือนก่อน +10

    It'll be nice to have a deep dive into hangfire

  • @teisdraiby9386
    @teisdraiby9386 7 หลายเดือนก่อน +3

    An in-depth video on Hangfire would be awesome!

  • @anonymoos
    @anonymoos 7 หลายเดือนก่อน +1

    Perfect timing on this video! I am just starting to build an application that needs to execute tasks on a background service, with a follow-up n hours later AND have scheduled jobs. Hangfire looks to do all of that and includes a nice dashboard to boot. I will also look at some of the other libraries mentioned in the comments--Quartz, Coravel, FluentScheduler. Very excited I won't need to build from scratch :D

  • @AlphaZero-s4f
    @AlphaZero-s4f 7 หลายเดือนก่อน +2

    Please make a video to show all possible things we can do with Hangfire. I love your content so much.

  • @Abinton96
    @Abinton96 7 หลายเดือนก่อน +11

    Could you make a comparison to Quartz. We are using Quartz but had some problems of scheduled Jobs that were never executed (due to a Bug I then fixed in v3.4). In addition we needed to extend a bunch of extra stuff. So, would be nice to know if there is another scheduling framework which is worth it switching.

  • @DeadDad1
    @DeadDad1 7 หลายเดือนก่อน

    Wow! Awesome library! I will definitely be checking it out. Thank you Nick!

  • @brechtlaitem
    @brechtlaitem 7 หลายเดือนก่อน +2

    We also use this a lot in our projects. With some nice extension packages you can have progress bars in the dashboard wich is cool. The dashboard itself is useful, but if you have a lot of jobs that get triggered very often it can become cumbersome to find an invokation of certain job types. Some sort of filter on date or job would be nice.

    • @PaulPendor
      @PaulPendor 7 หลายเดือนก่อน +1

      Hi there. Apologies if you already know this, but thought I would offer a suggestion. You can give your jobs a Display Name and incorporate instance arguments into the name. The display name is then displayed as the job name in the dashboard. This doesn't solve the problem of being able to search for a specific job, but you could for example set your paging to 50 or 100 per page, and then use the in browser search.
      Your code might look something like this:
      public class MyJobClass
      {
      [DisplayName("Job for customer {3} with argument {0} and number {1}")]
      public async Task MyJobMethod(string argument1, int argument2, string customerName)
      {
      .... // Your method code
      }
      }
      This can be helpful for tracking down specific instances of regularly run jobs.

  • @theprantadutta
    @theprantadutta 7 หลายเดือนก่อน

    Thank you a lot, you are not going to believe the timing of this video is inch-perfect.

  • @margosdesarian
    @margosdesarian 7 หลายเดือนก่อน +2

    Surely Nick you have played around with the scheduling options that you can build in .Net Core? What are the drawbacks that make you prefer Hangfire?

  • @ermanafacan
    @ermanafacan 8 หลายเดือนก่อน +9

    I have used hangfire I generally like it. Dashboard is good but not properly documented how to secure it. Having multiple servers is a good benefit to scale.
    dashboard security and scale with multiple servers are the next video post ideas from me. Perhaps it's good to mention about async await problem of it too

    • @Daniel15au
      @Daniel15au 7 หลายเดือนก่อน

      To secure it, you need to pass an authorization filter in the options for UseHangfireDashboard.

    • @codecomposer88
      @codecomposer88 7 หลายเดือนก่อน

      Curious, what's the async/await problem?

  • @PhilippFeigl
    @PhilippFeigl 7 หลายเดือนก่อน +6

    While I love Hangfire and we also used it in various production environments, my by far biggest problem is that under the hood everything is static. While the surface looks nicely integrated into the .net service architecture, it actually really isn't. This makes it absolutely impossible to write reproducable integration tests because there is no way to reset the state of the objects.

    • @Kirides
      @Kirides 7 หลายเดือนก่อน

      i agree, while i understand that hangfire is from a time looong before ServiceCollection or other "modern" patterns (like a non-static builder pattern)
      i really wish that hangfire upgrades to a non-static builder. I really see no reason not to.
      If i want a static IJobScheduler, let me do that, but don't force it on me (have everything available static even if i don't want).

    • @nilphilus
      @nilphilus 7 หลายเดือนก่อน

      I do personally created some 'system tests' which is pretty much reproducable. (except the part when it is affected by other service - but you might prepare similar thing with more static data). However initial phase of it is to drop and recreate database and start from 'blank environment' -> next step is to create a HangfireServer which is assigned to 'test customer' (each server which we have is responsible of different customers with different databases) - after that I've created a 'WaitForJob' method which works on while loop searching for not finished (failed) jobs and let rest of the process to continue when it is '0'.
      but indeed - there is a lot of static and is like part of documentantion also in places when you have other options. Dashboard however is a bit annoying, becouse if I want to cover new 'customer database' it have to be re-released becouse route have to be registred

  • @ronaldmariah
    @ronaldmariah 7 หลายเดือนก่อน +2

    It's the first time I'm hearing of Insomnia. Is this what you prefer using over Postman or is there certain features Insomnia has over Postman that makes it better?

    • @karpovv_boris
      @karpovv_boris 7 หลายเดือนก่อน +1

      It’s matter of taste in general or what’s in use in company you working at. In fact it’s all json files and ui - forms and buttons, cli or your preferred prog language script.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      Insomnia is way better at saving params and collections in a Git friendly form (although not perfect), making usable for sharing across the team.
      And I think it even has a free feature for sharing, but not sure on that one.

  • @TheWoodad
    @TheWoodad 7 หลายเดือนก่อน +1

    Have used Quartz, HF and Coravel and for me personally, choosing one over another depends on the environment and app requirements.

  • @MatinDevs
    @MatinDevs 7 หลายเดือนก่อน

    Thank you Nick for listening to us and making valuable videos again ❤

  • @haroldoribeirogomes7103
    @haroldoribeirogomes7103 6 หลายเดือนก่อน

    I'm facing some issues with Hangfire not disposing DbCobtext objects properly, consuming lots of memory until reach 100%of free memory.

  • @paviad
    @paviad หลายเดือนก่อน

    How do you query hangfire for the status of a recurring job?

  • @zeeshanmustafa7818
    @zeeshanmustafa7818 7 หลายเดือนก่อน

    Since dotnet core, when hosted inside IIS, Hangfire goes down when app/api goes idle. Hence scheduled jobs are not executed on time. None of the solution worked for me ever and I moved to dotnet background workers (WS). Did anyone else faced similar issue, or was it only me doing something silly?

  • @harshiramani7274
    @harshiramani7274 4 หลายเดือนก่อน

    I have a question about Quartz , can it be used without a database connection to schedule multiple triggers for the same job, if yes how?

  • @skitto6554
    @skitto6554 3 หลายเดือนก่อน

    This is my goto. Every client loves the dashboard features

  • @АлексейЩербак-б3ь
    @АлексейЩербак-б3ь 7 หลายเดือนก่อน

    Why just do not use a message broker with default dotnet background worker (hosted service)?

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      Cannot do scheluding, i.e. executing code in the future or every monday at 6

  • @adrigorithm
    @adrigorithm 7 หลายเดือนก่อน +1

    What do you mean "trust"? These are open source, you can look at the code. That being said if you want how everything works you should be using timers (and eventually roll your own scheduling system).

  • @vertigosoft
    @vertigosoft 7 หลายเดือนก่อน

    I had to dump hangfire for quartz net because hangfire retry policyfor schedule jobs doesn't work as expected, and it does not allow me to run jobs in parallel.

    • @codecomposer88
      @codecomposer88 7 หลายเดือนก่อน

      Care to elaborate? I though parallel jobs with Hangfire were kinda the thing it was supposed to do (other than scheduling) based on the worker count? Maybe I have misunderstood something.

  • @mr.nobody4494
    @mr.nobody4494 8 หลายเดือนก่อน +2

    Hello, I can't find the monthly subscription on the website, I think I have seen it at some point. I don't know if it's a bug on the website or it's just something I imagined. It would be great to have her back. Greetings!

    • @nickchapsas
      @nickchapsas  8 หลายเดือนก่อน +1

      There is no monthly subscription and there won't be until at least mid to late 2025

    • @mr.nobody4494
      @mr.nobody4494 7 หลายเดือนก่อน +1

      @@nickchapsas sad

  • @Apptelope
    @Apptelope 7 หลายเดือนก่อน

    Another solution to consider is employing an external job scheduler that triggers tasks via API, effectively decoupling processes in an elegant manner.

  • @xelesarc1680
    @xelesarc1680 8 หลายเดือนก่อน +2

    Yes i do use hangfire in production, its reliable but need some validation and etc if job run long time it can be run again even if the job still run

    • @nickchapsas
      @nickchapsas  8 หลายเดือนก่อน

      Yes, you need to make sure that your job processing is deterministic

    • @AndersReinhardtHansen
      @AndersReinhardtHansen 8 หลายเดือนก่อน +1

      Buy the full version, this can guarantee that jobs do not run more than once even across different deployments

    • @Kingside88
      @Kingside88 7 หลายเดือนก่อน

      Unfortunately my post was deleted.
      So can use it this way: private readonly ReaderWriterLockSlim locker = new();
      public void MyReccuringTask() {
      try
      {
      locker.EnterWriteLock();
      // Do your stuff
      }
      finally
      {
      locker.ExitWriteLock();
      }
      }

    • @emllik2155
      @emllik2155 7 หลายเดือนก่อน

      Have you tried increasing invisibility timeout/sliding invis timeout? It's 30 min by default iirc so any job that takes longer than that will start over

  • @ThekillingGoku
    @ThekillingGoku 7 หลายเดือนก่อน

    We've got a private/custom implementation for recurring and on demand tasks actually. Likely because we've had this need for many, many years now. But having a fully custom thing does have it's own advantages (and some disadvantages too of course, mostly in cost to build + maintain it).
    However, that's mostly legacy at this point though, since most projects these days are cloud first and as such Azure's replaced all of that. Basically, Azure Functions are generally the first stop for whatever needs to happen. Easy enough to get those scheduled if need be.

  • @6uiti
    @6uiti 7 หลายเดือนก่อน +1

    Why would I use this instead of windows task scheduler

  • @Jachtann
    @Jachtann 7 หลายเดือนก่อน

    I use Hangfire, but sometimes it happens my job is run twice (I have 3 replicas in k8s). Maybe its because I'm using redis with two replicas as job storage?

  • @lolyasuo1235
    @lolyasuo1235 7 หลายเดือนก่อน

    How about securing dashboard (exposing it only to authenticated users) and splitting it from the project to a different domain?

  • @yohanespradono5224
    @yohanespradono5224 4 หลายเดือนก่อน

    which package to use with mysql ?

  • @oleksiia
    @oleksiia 7 หลายเดือนก่อน

    Is it next possible ?
    - have web API with Hangfire as described in the video but only for job registrations
    - have a separate service (several may be) on different host\hosts connected to the same Hangfire database but actually processed registered by API jobs.

    • @codecomposer88
      @codecomposer88 7 หลายเดือนก่อน

      Yes. Hangfire separates the client (job scheduling) from the server(s) (job processing). They don't have to run on the same host. Common approach is to deploy a Windows Service as a server instance. You can have multiple servers that are processing the jobs. They just need access to the Hangfire data storage. And for each server you can specify if it should only process jobs from specific queues (default is to process from all queues).

  • @Cesar-qi2jb
    @Cesar-qi2jb 7 หลายเดือนก่อน

    How do you prevent the IIS hosted app from going into idle?
    How do you authenticate the dashboard using Azure AD?

  • @WeirdmanCodes
    @WeirdmanCodes 7 หลายเดือนก่อน

    Big fan of hangifre, I use it heavily at work and would love to see a deeper dive into how you use it!

  • @zoltanzorgo
    @zoltanzorgo 7 หลายเดือนก่อน

    I need a scheduling library that uses "circuit breaker - retry policy" pattern. Not on job level, bu across jobs. What I mean by that is the ability to group jobs by some sort of typing. Firt and foremost when they fail - how they fail. Let's assume I have many instances of the same job with different parameters, but relying on the same third party service. Or different jobs using that same service. And let's suppose that service is unavailable for some period. I need a mechanism that can put on hold all subsequent job instances relying on that service if N consequent attemtps to use it fail (spread in the job queue), and have some retry policy, that can even put them fully suspended after M failed retry sessions, but with the ability to switch "manually" that circuit breaker back on.
    I am aware of both Hangfire and Quartz, bud haven't used them yet. Is any of these or any other similar tool providing something like this?

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      That's not the job of *any* external library, that's the job of your application code
      Polly is a nice library to do that

  • @_iPilot
    @_iPilot 8 หลายเดือนก่อน +1

    Hangfire is amazing. And their dashboard too. The worst part of the engine, that their client API is still synchronous meanwhile the most of storages they use have asynchronous API. Anyway, it works fine executing asynchronous methods enqueued.

  • @ahmadalsader1047
    @ahmadalsader1047 7 หลายเดือนก่อน

    can you make it cluster aware using the settings ? if yes dose it take a strategy like round robin ... etc ?

  • @cdarrigo
    @cdarrigo 7 หลายเดือนก่อน

    One thing that wasn't clear in the video, when the scheduled job runs, is that code executing on the hang fire server, or is it doing a call back into the dispatching service and running the code in the service? If it's calling back into the service for execution, how does that work? When you have multi nodes of your service, does it always call back to the exact instance of your service that dispatched the job? Could that end up hotspotting execution? Thanks!

    • @JasonSobell
      @JasonSobell 7 หลายเดือนก่อน

      It's running in the server instance. Everything needed to run the command has to have been serialised, and if you are running a custom class you need to make sure that DLL is present and registered on each destination server.
      Job dispatching is done from outside of the service, so there is no 'call back' occurring. In theory you could insert a record straight into the database from a command prompt, and one of your Hangfire server instances would see it, consume it, run it, then save the result in the job result.
      Remember that this is not some form of RPC, it is a scheduler, so as far as client apps are concerned it's fire and forget. You have API calls to request the status of jobs by your own criteria, so you might add a GUID to your job data, then poll Hangfire afterwards and ask it if the job with that GUID passed or failed, but it is a scheduler.
      I use this for large scale ETL processes and client emailers, with custom jobs. I run thousands of jobs per day, and send out hundreds emails, each being its own job. I can check the failed jobs list in the Dashboard for problems, and rerun them manually.
      It is an extremely powerful system, and the Dashboard makes it more acceptable to clients than Quartz.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      As said, it''s run on the server.
      If you need scalability (and don't want to send a bunch of dlls to another server after each build...), use a webApi endpoint on your main application.
      It may be slower, but you never will need to touch your Hangfire server.
      Or messaging. Messaging works too.

    • @JasonSobell
      @JasonSobell 7 หลายเดือนก่อน

      @@RaMz00z I'm not sure what you're suggesting here.
      Creating a webAPI prevents scalability, as it's a single endpoint. Whatever you do for scaling you will have to distribute custom DLLs (unless it's a simple enough function to serialise as in Nick's example which is simply auto-self-deployment). This is not a disadvantage or negative, it's just a necessity when you have custom code.
      You could deploy your solution to an image then run it scalable on Azure or AWS, as Hangfire will simply add them as new servers available to process tasks, but the whole point of a scalable service is that it can run on separate resources to allow parallelism. Funneling it back into a webAPI seems to defeat the purpose of a scalable solution.

  • @MrJackFroso
    @MrJackFroso 7 หลายเดือนก่อน +2

    After working a lot with Hangfire i kind of have to disagree on it beeing the scheduler you should use. Yes its a solid solution but for staging with a single db and multiple devs its at least for me a bit frustrating whereas coravel shines with its simplisity. Dont get me wrong i do thing i didnt dig enough to get it working as i want it too but mostly you dont want to dig that deep

  • @jamesreynolds3167
    @jamesreynolds3167 7 หลายเดือนก่อน

    My company has built in-house a background worker ui. It shows what background tasks are running, and how many instances of each per host, and we can scale up/down per host through the dashboard if needed
    It would be cool if we could move it to something off the shelf. I'd love a deeper dive if something like this is possible.

  • @MrIsrael3000
    @MrIsrael3000 7 หลายเดือนก่อน

    I have been using HangFire for a while but I don't like that I need to have the connection to the data storage every place I use the scheduler, there is not a concept of HangFire Server and HangFire client libraries.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      You can use the SideCar pattern for that.
      Basically you have one specific service that has those infos, and you call that service when needed. By means of webApi or messaging.

    • @MrIsrael3000
      @MrIsrael3000 7 หลายเดือนก่อน

      yeah, this makes sense in certain scenarios, however I pretended to use Hangfire as a separated pod or as a separated service, to manage scheduled services across organization, maybe is not intended for this scenario.

  • @maksymkyian4920
    @maksymkyian4920 7 หลายเดือนก่อน

    Seems very cool, I would love to see an advance use cases video!

  • @robwalker4653
    @robwalker4653 7 หลายเดือนก่อน

    Hi Nick, quick question. If you want to schedule jobs but also queue tasks. Would you recommend using this solely. Or would you only use this for scheduling and then something like Mass Transit for queuing?

  • @BozCoding
    @BozCoding 7 หลายเดือนก่อน

    Really interesting, I'd love to see more in-depth preview, especially since I've been looking at Microsoft's Durable Functions, but also been wanting to move away from requiring MSSQL (esp since they don't support an ARM64 Docker container atm).

  • @luc9volts
    @luc9volts 7 หลายเดือนก่อน

    What if the prod user is iis don't have permission of create table?

    • @necatorem
      @necatorem 6 หลายเดือนก่อน +1

      It needs the permits the first time, or the script for objects creation export from DEV

  • @Synesthesia-r9
    @Synesthesia-r9 7 หลายเดือนก่อน

    This is very cool, but I can't really think of many use cases for this. What are people using it for?

  • @canergurelsoy6875
    @canergurelsoy6875 7 หลายเดือนก่อน

    how about compiring hangfire to Coravel ??

  • @bhargavchowdary8062
    @bhargavchowdary8062 7 หลายเดือนก่อน

    Can we monitor an application using hangfire

  • @Guillen8606
    @Guillen8606 6 หลายเดือนก่อน

    Thanks for the great video. Can we see another scenario of an app close to production?

  • @hafizabdullah7488
    @hafizabdullah7488 7 หลายเดือนก่อน

    Hangfire is great to do background job but the dashboard becomes really slow after some time because of past data.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      You can setup a cleaning policy on the server (I'm pretty sure).
      Or just clean the database yourself.

    • @hafizabdullah7488
      @hafizabdullah7488 7 หลายเดือนก่อน

      @@RaMz00z yes, that is one of the way but it does not help for case like you want to process thousands of data on a day and you just want to monitor of what went well and what went wrong. You open the dashboard and it feels really slow.

  • @haruundk
    @haruundk 3 หลายเดือนก่อน

    It would be really great if you could do a deep dive or a much in depth video of hangfire

  • @ggekko8070
    @ggekko8070 7 หลายเดือนก่อน

    I don’t get the point of hard coding of adding jobs in the code, does the dashboard allow me to add jobs dynamically?

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      Not to my knoledge no, it isn't the usage intended.
      Hangfire uses code static anylisis to serialize the code needed to be executed. How would you do that in a web form ?

  • @ЕгорФедоренко-с2щ
    @ЕгорФедоренко-с2щ 7 หลายเดือนก่อน +1

    Nik finally switched to a new JetBrains IDE design

  • @mip83
    @mip83 7 หลายเดือนก่อน

    I didn’t find it super reliable, maybe it was the version I was on but things like attributes for controlling concurrency and retries just wouldn’t behave. I got on better with queues and serverless functions myself, which ended up being cheaper than hangfire as well as you don’t need the always on compute sat there polling and costing money.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      Concurrencies and retries are not Hangfire's responsibility but your code's.
      It is not meant for executing complex code. Call a webApi if you need to do that.

    • @mip83
      @mip83 7 หลายเดือนก่อน

      @@RaMz00zWhy does it have concurrency and retry attributes then?

  • @ZachB-b5p
    @ZachB-b5p 4 หลายเดือนก่อน

    Can you make an in depth video of Hangfire please. Also another video comparing Quartz vs Hangfire.

  • @DasBloch
    @DasBloch 7 หลายเดือนก่อน

    I think a video about scaling out would be cool. So many asp core api's are setup using scaleout in some way or another. So how do i make sure a job is only executed once across the instances of my api. Can i have another aspcore api be the worker and others be "enquers". Stuff like that. Looking forward to more of your videos !

  • @rrfarmer2000
    @rrfarmer2000 7 หลายเดือนก่อน

    Would very much like more info on this! Looks really nice, especially since it's not a windows service!

  • @user-ys6nh6fe5o
    @user-ys6nh6fe5o 7 หลายเดือนก่อน

    isn't serverless already replaced it?

  • @ДмитрийКондратенко-б5ь
    @ДмитрийКондратенко-б5ь 7 หลายเดือนก่อน

    Hi Nick. Please make more videos about Hangfire

  • @krccmsitp2884
    @krccmsitp2884 7 หลายเดือนก่อน

    7:28 What's Insomnia?

    • @PorscheQuebrado
      @PorscheQuebrado 7 หลายเดือนก่อน

      Postman alternative.

    • @meta7517
      @meta7517 หลายเดือนก่อน

      An API client. It's pretty nice to test REST APIs

  • @andrewiecisa2907
    @andrewiecisa2907 7 หลายเดือนก่อน

    Interesting content. Thanks! I still prefer message based scheduling, like Azure service bus or even rabbit mq, no pooling necessary.

  • @yegorandrosov6334
    @yegorandrosov6334 7 หลายเดือนก่อน +1

    Once my database reached its storage quota causing website downtime.. Hangfire did not delete its jobs

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน +1

      Doesn't do any deleting by default, but there's a param for that

  • @amitkumdixit
    @amitkumdixit 7 หลายเดือนก่อน

    I am using it for years and it's very very reliable

  • @kevbite
    @kevbite 7 หลายเดือนก่อน

    Does HangFire support Timezone scheduling yet?

    • @emllik2155
      @emllik2155 7 หลายเดือนก่อน +1

      Yup, TimeZoneInfo is an optional parameter when scheduling recurring jobs

  • @gonace
    @gonace 7 หลายเดือนก่อน

    I’d use Quartz instead, at least for simple scheduled jobs that does not need any admin gui.

  • @1Eagler
    @1Eagler 7 หลายเดือนก่อน

    How do you debug it?
    The usual way?

  • @grimmersnee
    @grimmersnee 7 หลายเดือนก่อน

    HF just works and fairly simple and easy to setup

  • @philipmrch8326
    @philipmrch8326 8 หลายเดือนก่อน +34

    Hello everybody I'm Nick

    • @jacobmars1902
      @jacobmars1902 8 หลายเดือนก่อน +1

      no, i am

    • @margosdesarian
      @margosdesarian 7 หลายเดือนก่อน

      @@jacobmars1902 No, IM Nick, and so's my wife

    • @griffonethousand
      @griffonethousand 7 หลายเดือนก่อน +2

      I’m Nick and so is my wife!

    • @BetrayedEnemy
      @BetrayedEnemy 7 หลายเดือนก่อน +1

      It says in your Username you are Philip tho

    • @philipmrch8326
      @philipmrch8326 7 หลายเดือนก่อน

      @@BetrayedEnemy I'm Nick

  • @rmcgraw7943
    @rmcgraw7943 6 หลายเดือนก่อน

    The last thing I want to do is make my task scheduler (not System.Threading.Tasks.Task) dependent upon application code! This is an incredibily bad idea, unless you are writing an interface for your task scheduler.

  • @JackBauerDev
    @JackBauerDev 7 หลายเดือนก่อน +1

    How much are they paying you

  • @Mikarsoft
    @Mikarsoft 7 หลายเดือนก่อน +1

    I made my own scheduler with only five scripts. A tiny library that can run every and execute any action that you throw in there, using cron expressions .You have also full control of the action because it returns a unique Id every time you schedule a task so you can cancel it at any point by api call.

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน +1

      Hangfire sends an ID that you can cancel as well.

  • @ChristopherBrandsdal
    @ChristopherBrandsdal 8 หลายเดือนก่อน

    Yes we want more Hagfire!

  • @peter_kiss
    @peter_kiss 7 หลายเดือนก่อน

    Hangfire still executing everything (jobs, interacting with the storage) synchronously which is a big bummer. Everything will be a blocking call under the hood.

  • @10Totti
    @10Totti 7 หลายเดือนก่อน +1

    Best video thanks!

  • @larsp5109
    @larsp5109 7 หลายเดือนก่อน

    Hopefully integration with Aspire will become available soon.

  • @Archfile375
    @Archfile375 7 หลายเดือนก่อน

    Please make that video! Very interesting stuff.

  • @SeymourRu
    @SeymourRu 7 หลายเดือนก่อน

    Hangfire looks good, but personally I prefer Quartz 😅

  • @DIoxide-ck8uy
    @DIoxide-ck8uy 7 หลายเดือนก่อน

    Hangfire causes some high cpu usage on my dedicated server sometimes

  • @leknyzma
    @leknyzma 7 หลายเดือนก่อน +1

    there is so much ways to create background threads, I would not use this lib at all. Only if I had to

    • @RaMz00z
      @RaMz00z 7 หลายเดือนก่อน

      It's not intended for background threads but for scheduling. Even tho it can effectively do that as well

  • @mohammadjaber3898
    @mohammadjaber3898 8 หลายเดือนก่อน +1

    I also liked Coravel

  • @EricOnYouTube
    @EricOnYouTube 8 หลายเดือนก่อน

    What IDE is he using?

    • @eqwerty610
      @eqwerty610 8 หลายเดือนก่อน +3

      Rider

    • @tedchirvasiu
      @tedchirvasiu 8 หลายเดือนก่อน +1

      Rider

  • @stephenyork7318
    @stephenyork7318 7 หลายเดือนก่อน

    Hangfire is terrible. I’ve had cases where I’ve disabled schedules and they still run. The database has a fully qualified namespace to a method that will run and it invokes them when it shouldn’t.

  • @guy-heylens
    @guy-heylens 8 หลายเดือนก่อน

    Been using this for years.

  • @stoppanigiovannino
    @stoppanigiovannino 7 หลายเดือนก่อน

    Ciao Vittorio, bene colpani, buon gregario.
    Per Luis Alberto ripeto quello che dico da vent'anni, non capisco perché aspettare le offerte,
    Le società serie sono proattive sul mercato perché preferiscono monetizzare il giocatore piuttosto che lasciare che il morbo covi nello spogliatoio fino a corrompere tutto il gruppo come più volte denunciato da Sarri

  • @artemissterio
    @artemissterio 7 หลายเดือนก่อน

    Hello Nick I’m everybody

  • @Vosoo-e9r
    @Vosoo-e9r 2 หลายเดือนก่อน

    All this you can easy do with std code and EF )))))

  • @fusedqyou
    @fusedqyou 8 หลายเดือนก่อน +4

    I would rather see a video that explains how to make your own scheduler. Hangfire is badly implemented, Quartz requires a big chunk of manual labor, and Coravel is behind a paywall. Making your own is very easy anyway.

    • @AndersReinhardtHansen
      @AndersReinhardtHansen 8 หลายเดือนก่อน

      Not invented here, why use other people http servers and messaging frameworks, when you can do it yourself.

    • @fusedqyou
      @fusedqyou 8 หลายเดือนก่อน

      @@AndersReinhardtHansen My point is that you can easily write a scheduler that does the job instead of using a library that either contains a massive amount of overhead or doesn't to the job you expect it to do.

    • @TuxCommander
      @TuxCommander 8 หลายเดือนก่อน

      Agreed. The only reason I tested Hangfire but was using Quartz in the end, was the convenience of CRON expression.
      However, even Quartz generated some headaches, which motivates me to make an own scheduler. The mess with timers in .NET and how to pick the right one, was the "hardest" part of it.
      If you need a scheduler only, build one and sleep well.

    • @AndersReinhardtHansen
      @AndersReinhardtHansen 7 หลายเดือนก่อน

      @@fusedqyou yeah and that is my point, you cannot make a better scheduler in the time it takes to setup a hangfire job. There is also the added advantage in the fact that if you have used hangfire before it is even faster yo setup and read the code.

    • @fusedqyou
      @fusedqyou 7 หลายเดือนก่อน

      @@AndersReinhardtHansen I think this is up for debate. Most people can just write a simple timer to satisfy their needs of a scheduler. I didn't spend longer than a day to write a basic scheduler that handles multiple tasks in a specific interval, so if there was an actual tutorial on it then anybody could make one.

  • @fastbier
    @fastbier 8 หลายเดือนก่อน

    This Hangfire gives me so much headache everyday...

    • @jeromewilson
      @jeromewilson 7 หลายเดือนก่อน +1

      What kind of issues have you had?

  • @X39
    @X39 7 หลายเดือนก่อน

    Neat Ad

  • @vm123
    @vm123 7 หลายเดือนก่อน +3

    This course advertising is so anoying

  • @AndersReinhardtHansen
    @AndersReinhardtHansen 8 หลายเดือนก่อน

    Problem is, it was developed from Russia. I introduced it with a customer 1 month before the war and I was unable to get the licensed version which I requested, because of company policy.
    Edit: is is no longer based in Russia

    • @guy-heylens
      @guy-heylens 8 หลายเดือนก่อน +1

      Started in Russia, they are now in Estonia. Same with Jetbrains, do you stop using Jetbrains as well?

    • @xelesarc1680
      @xelesarc1680 8 หลายเดือนก่อน

      I thnk hangfire is free are

    • @AndersReinhardtHansen
      @AndersReinhardtHansen 8 หลายเดือนก่อน

      @@guy-heylens they moved during the war, jetbrains before. It was not my choice not to use it. The decision was done in the purchase department. And at that time the company was based in Russia, they were writing a blog about moving to Estonia.

    • @AndersReinhardtHansen
      @AndersReinhardtHansen 8 หลายเดือนก่อน

      ​@@xelesarc1680the basic version yes. I needed the pro version.

    • @dangg44
      @dangg44 7 หลายเดือนก่อน

      What stupid reasons, just because it is "Russian" software. What a pathetic world we lived in? We wouldn't even have to use American software at this point if we were consistent

  • @Great_Critic
    @Great_Critic 7 หลายเดือนก่อน

    Hey Nick. Where were you born?) just curious

  • @olegilyin6002
    @olegilyin6002 7 หลายเดือนก่อน

    very buggy lib, this is a promotional video

  • @Bennevisie
    @Bennevisie 8 หลายเดือนก่อน

    First comment! Send money. 😂