{"id":20075748,"url":"https://github.com/data-miner00/jobscheduling","last_synced_at":"2026-04-24T12:04:04.481Z","repository":{"id":227444073,"uuid":"736867657","full_name":"data-miner00/JobScheduling","owner":"data-miner00","description":"Job scheduling examples with C#","archived":false,"fork":false,"pushed_at":"2024-12-24T13:56:13.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-11T10:46:42.470Z","etag":null,"topics":["csharp","dotnet","hangfire","quartz"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/data-miner00.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-29T05:34:14.000Z","updated_at":"2024-12-24T13:56:17.000Z","dependencies_parsed_at":"2024-12-24T15:19:43.718Z","dependency_job_id":"ee4b8dec-8351-4a60-ad90-c1984f55d2cf","html_url":"https://github.com/data-miner00/JobScheduling","commit_stats":{"total_commits":30,"total_committers":1,"mean_commits":30.0,"dds":0.0,"last_synced_commit":"8931e0ccf60558ebf99730e2172f14dee5d0b91f"},"previous_names":["data-miner00/jobscheduling"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/data-miner00/JobScheduling","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-miner00%2FJobScheduling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-miner00%2FJobScheduling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-miner00%2FJobScheduling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-miner00%2FJobScheduling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/data-miner00","download_url":"https://codeload.github.com/data-miner00/JobScheduling/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/data-miner00%2FJobScheduling/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32222483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T10:26:35.452Z","status":"ssl_error","status_checked_at":"2026-04-24T10:25:27.643Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","hangfire","quartz"],"created_at":"2024-11-13T15:00:29.650Z","updated_at":"2026-04-24T12:04:04.448Z","avatar_url":"https://github.com/data-miner00.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JobScheduling\n\nAn example repository for job scheduling in C#.\n\n## Directory\n\n1. **JobScheduling.Common**: Common shared codes\n1. **JobScheduling.Simplest**: Simplest scheduling on Quartz\n1. **JobScheduling.DependencyInjection**: Using Quartz with dependency Injection\n1. **JobScheduling.WebApiExample**: Using Quartz, background job and WebApi\n1. **JobScheduling.HangfireApp**: Simplest scheduling on Hangfire\n1. **JobScheduling.WebApiExample.HangfireApp**: Using Hangfire and WebApi\n\n## Details\n\n### JobScheduling.Simplest\n\nThis example is just a console app that has 1 Quartz job called `HelloJob`.\n\n```mermaid\nflowchart LR\n    A[Program] --\u003e B(HelloJob)\n```\n\n### JobScheduling.DependencyInjection\n\nThis example includes two Quartz jobs running on different Cron schedule using dependency injection technique.\n\n```mermaid\nflowchart TD\n    A[Program] --\u003e B(FirstJob)\n    A[Program] --\u003e C(SecondJob)\n```\n\n### JobScheduling.WebApiExample\n\nThis example illustrates running a WebAPI project alongside with background service and Quartz Cron Jobs.\n\n```mermaid\nflowchart TD\n    A[Program] --\u003e F(WebApi)\n    A[Program] --\u003e B(LogBackgroundService)\n    A[Program] --\u003e C(QuartzBackgroundService)\n    C --\u003e D(FirstJob)\n    C --\u003e E(SecondJob)\n```\n\nExample of the logs in the console:\n\n```log\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:42:14 - 0 0/1 * 1/1 * ? *\ninfo: Microsoft.Hosting.Lifetime[14]\n      Now listening on: https://localhost:7042\ninfo: Microsoft.Hosting.Lifetime[14]\n      Now listening on: http://localhost:5281\ninfo: Microsoft.Hosting.Lifetime[0]\n      Application started. Press Ctrl+C to shut down.\ninfo: Microsoft.Hosting.Lifetime[0]\n      Hosting environment: Development\ninfo: Microsoft.Hosting.Lifetime[0]\n      Content root path: D:\\Workspace\\Visual Studio\\JobScheduling\\JobScheduling.WebApiExample\ninfo: JobScheduling.WebApiExample.Controllers.WeatherForecastController[0]\n      Get weather called\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:42:24 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:42:34 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:42:44 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:42:54 - 0 0/1 * 1/1 * ? *\nExecuting Second Job: 09/16/2024 08:43:00\nExecuting First Job: 09/16/2024 08:43:00\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:04 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:14 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:24 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:34 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:44 - 0 0/1 * 1/1 * ? *\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:43:54 - 0 0/1 * 1/1 * ? *\nExecuting First Job: 09/16/2024 08:44:00\nExecuting Second Job: 09/16/2024 08:44:00\nLogging from LogBackgroundService - ExecuteAsync - 09/16/2024 08:44:04 - 0 0/1 * 1/1 * ? *\n```\n\n### JobScheduling.WebApiExample.HangfireApp\n\nThis example illustrates running a WebAPI project alongside with Hangfire queue, scheduling and recurring Cron Jobs.\n\n```mermaid\nflowchart TD\n    A[Program] --\u003e F(WebApi)\n    F --\u003e C(job endpoint)\n    C --\u003e D(Queue)\n    C --\u003e E(Schedule)\n    C --\u003e G(Recurring)\n```\n\n## Resources\n\n- [Quartz.NET](https://www.quartz-scheduler.net/)\n- [Cron Expression Generator \u0026 Explainer - Quartz](https://www.freeformatter.com/cron-expression-generator-quartz.html)\n- [Hangfire](https://www.hangfire.io/)\n- [CronMaker](http://www.cronmaker.com/)\n- [Crontab.guru](https://crontab.guru/): Linux standard. Not applicable for Quartz\n- [The Only .NET Scheduler You Should Be Using!](https://www.youtube.com/watch?v=4wURs-67mB0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata-miner00%2Fjobscheduling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdata-miner00%2Fjobscheduling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdata-miner00%2Fjobscheduling/lists"}