{"id":29380508,"url":"https://github.com/andryushchenko/ainq.background","last_synced_at":"2026-04-11T18:13:03.544Z","repository":{"id":43058023,"uuid":"262149011","full_name":"andryushchenko/AInq.Background","owner":"andryushchenko","description":"Background work utilities for .NET Core apps based on Hosted services","archived":false,"fork":false,"pushed_at":"2026-01-18T09:23:29.000Z","size":1445,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-18T17:34:05.150Z","etag":null,"topics":["background","cron","dotnet","hostedservices","queue"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andryushchenko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-07T20:13:56.000Z","updated_at":"2026-01-18T09:23:32.000Z","dependencies_parsed_at":"2023-01-31T21:45:38.203Z","dependency_job_id":"618ecd43-b5bd-41f4-b3a6-3272311df12b","html_url":"https://github.com/andryushchenko/AInq.Background","commit_stats":null,"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/andryushchenko/AInq.Background","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andryushchenko%2FAInq.Background","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andryushchenko%2FAInq.Background/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andryushchenko%2FAInq.Background/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andryushchenko%2FAInq.Background/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andryushchenko","download_url":"https://codeload.github.com/andryushchenko/AInq.Background/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andryushchenko%2FAInq.Background/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29199519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T14:35:27.868Z","status":"ssl_error","status_checked_at":"2026-02-07T14:25:51.081Z","response_time":63,"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":["background","cron","dotnet","hostedservices","queue"],"created_at":"2025-07-10T03:01:32.194Z","updated_at":"2026-02-07T16:04:51.960Z","avatar_url":"https://github.com/andryushchenko.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AInq.Background\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/andryushchenko/AInq.Background)](https://github.com/andryushchenko/AInq.Background/releases) [![GitHub](https://img.shields.io/github/license/andryushchenko/AInq.Background)](LICENSE)\n\n![AInq](https://raw.githubusercontent.com/andryushchenko/AInq.Background/main/AInq.png)\n\n## What is it?\n\nBackground work utilities for .NET Core apps based on Hosted services. Originally designed for accessing API with strict request-per-second limit.\n\n- **Background work queue** with configurable parallelism and optional prioritizing\n- **Shared resource access queue** with different resource reuse strategies and optional prioritizing \n- **Background data processing conveyor** with different conveyor machine reuse strategies and optional prioritizing\n- **Work scheduler** with Cron support\n- **Startup work** utility\n\n## New in 4.1\n\n- **BREAKING CHANGES**\n  - **Startup work** utility moved to separate package **AInq.Background.Startup**\n- Minor bug fix and internal optimization\n\n## New in 4.0\n\n- **BREAKING CHANGES**\n  - Background work Scheduler interfaces moved to separate package **AInq.Background.Scheduler.Abstraction**\n  - Background work Scheduler now uses `Try` and `Maybe` from **AInq.Optional** to pass errors logically correct to Observable\n- Background work Scheduler now uses **System.Reactive** instead of custom buggy `IObservable\u003cT\u003e` implementation\n\n## New in 3.0\n\n- **GENERAL BUGFIX**\n- **New features**\n  - Service interaction extensions\n  - Batch processing extension\n  - Repeated work in `IWorkScheduler`\n  - Work results in `IWorkScheduler`\n- **Refactoring**\n  - Simplify basic interfaces: non-basic methods moved to extensions\n  - Cleanup Helpers and Extensions classes struct\n- **BREAKING CHANGES**\n  - Removed some unused methods from `WorkFactory` and `AccessFactory`\n  - Some extension methods moved form `AInq.Background.Helpers` namespace to `AInq.Background.Extensions` and `AInq.Background.Interaction`\n  - ~~`IActivatable`~~ `IStartStopppable`\n \n\n## Packages description\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background.Abstraction)](https://www.nuget.org/packages/AInq.Background.Abstraction/) AInq.Background.Abstraction\n\nBasic interfaces and helpers library.\n\n- Basic interfaces and factory classes:\n  - Work interfaces: `IWork`, `IWork\u003cTResult\u003e`, `IAsyncWork`, `IAsyncWork\u003cTResult\u003e`\n  - `WorkFactory` for creating simple work instances from delegates\n  - Resource access interfaces: `IAccess\u003cTResource\u003e`, `IAccess\u003cTResource, TResult\u003e`, `IAsyncAccess\u003cTResource\u003e`, `IAsyncAccess\u003cTResource, TResult\u003e`\n  - `AccessFactory` for creating simple access instances from delegates\n  - `IConveyorMachine\u003cTData, TResult\u003e` for conveyor data processing machines\n  - `IActivatable` and `IThrottling` for shared resources and conveyor machines with particular usage strategies\n- Service interfaces\n  - `IWorkQueue` and `IPriorityWorkQueue` for background task queue\n  - `IAccessQueue\u003cTResource\u003e` and `IPriorityAccessQueue\u003cTResource\u003e` for shared resource access queue\n  - `IConveyor\u003cTData, TResult\u003e` and `IPriorityConveyor\u003cTData, TResult\u003e` for background data processing conveyor\n- Helpers and extensions including methods to use services together (e.g. enqueue `IAccess\u003cTResource\u003e` to `IWorkQueue`) if needed\n\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background)](https://www.nuget.org/packages/AInq.Background/) AInq.Background\n\nQueues and conveyor implementations.\n\n- Background work queue\n  - Optional support for configurable parallelism\n  - Optional support for prioritizing\n  - Use `WorkQueueInjection` to register service or create for internal usage\n- Shared resource access queue\n  - Support single or many resource instances with different lifetime\n  - Optional support for prioritizing\n  - Use `AccessQueueInjection` to register service or create for internal usage\n- Background data processing conveyor\n  - Support single or many conveyor machines with different lifetime\n  - Optional support for prioritizing\n  - Use `ConveyorInjection` to register service or create for internal usage\n\nYou can extend functionality by implementing custom `ITaskWrapper`, `ITaskManager` or `ITaskProcessor` and combine with existing ones to create more service variants. \n\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background.Scheduler.Abstraction)](https://www.nuget.org/packages/AInq.Background.Scheduler.Abstraction/) AInq.Background.Scheduler.Abstraction\n\nWork scheduler interfaces and helpers library.\n\n- Service interfaces\n  - `IWorkScheduler` for background work scheduler\n- Helpers and extensions including methods to use services together (e.g. schedule `IAccess\u003cTResource\u003e` to `IWorkScheduler`) if needed\n\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background.Scheduler)](https://www.nuget.org/packages/AInq.Background.Scheduler/) AInq.Background.Scheduler\n\nWork scheduler implementation.\n- Support delayed, time-scheduled, and cron-scheduled work\n- Use `WorkSchedulerInjection` to register service or create for internal usage\n\nYou can extend functionality by implementing custom `IScheduledTaskWrapper` or `IWorkSchedulerManager` and combine with existing ones to create more service variants. \n\n**NOTE:** [Cronos](https://github.com/HangfireIO/Cronos) is used for parsing Cron expressions - follow documentation for supported options. Format with seconds is supported.\n\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background.Enumerable)](https://www.nuget.org/packages/AInq.Background.Enumerable/) AInq.Background.Enumerable\n\n**NEW** Batch processing extensions for `IWorkQueue`, `IAccessQueue\u003cTResource\u003e` and `IConveyor\u003cTData, TResult\u003e`\n\n#### [![Nuget](https://img.shields.io/nuget/v/AInq.Background.Startup)](https://www.nuget.org/packages/AInq.Background.Startup/) AInq.Background.Startup\n\n**NEW** Startup work utility for running some work *before* host start\n\nSupport interaction with background work queue\n\n## Documentation\n\nAs for now documentation is provided in this document and by XML documentation inside packages.\n\n## Contribution\n\nThese packages are in active production use, all fixes and improvements will be published after some internal testing.\n\nIf you find a bug, have a question or something else - you are friendly welcome to open an issue.\n\n## License\nCopyright © 2020 Anton Andryushchenko. AInq.Background is licensed under [Apache License 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandryushchenko%2Fainq.background","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandryushchenko%2Fainq.background","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandryushchenko%2Fainq.background/lists"}