AInq.Background.Scheduler
5.0.0
See the version list below for details.
dotnet add package AInq.Background.Scheduler --version 5.0.0
NuGet\Install-Package AInq.Background.Scheduler -Version 5.0.0
<PackageReference Include="AInq.Background.Scheduler" Version="5.0.0" />
paket add AInq.Background.Scheduler --version 5.0.0
#r "nuget: AInq.Background.Scheduler, 5.0.0"
// Install AInq.Background.Scheduler as a Cake Addin #addin nuget:?package=AInq.Background.Scheduler&version=5.0.0 // Install AInq.Background.Scheduler as a Cake Tool #tool nuget:?package=AInq.Background.Scheduler&version=5.0.0
AInq.Background
What is it?
Background work utilities for .NET Core apps based on Hosted services. Originally designed for accessing API with strict request-per-second limit.
- Background work queue with configurable parallelism and optional prioritizing
- Shared resource access queue with different resource reuse strategies and optional prioritizing
- Background data processing conveyor with different conveyor machine reuse strategies and optional prioritizing
- Work scheduler with Cron support
- Startup work utility
New in 4.1
- BREAKING CHANGES
- Startup work utility moved to separate package AInq.Background.Startup
- Minor bug fix and internal optimization
New in 4.0
- BREAKING CHANGES
- Background work Scheduler interfaces moved to separate package AInq.Background.Scheduler.Abstraction
- Background work Scheduler now uses
Try
andMaybe
from AInq.Optional to pass errors logically correct to Observable
- Background work Scheduler now uses System.Reactive instead of custom buggy
IObservable<T>
implementation
New in 3.0
- GENERAL BUGFIX
- New features
- Service interaction extensions
- Batch processing extension
- Repeated work in
IWorkScheduler
- Work reslts in
IWorkScheduler
- Refactoring
- Simplify basic interfaces: non-basic methods moved to extensions
- Cleanup Helers and Extensions classes struct
- BREAKING CHANGES
- Removed some unsued methods from
WorkFactory
andAccessFactory
- Some extension methods moved form
AInq.Background.Helpers
namespace toAInq.Background.Extensions
andAInq.Background.Interaction
IActivatable
IStartStopppable
- Removed some unsued methods from
Packages description
AInq.Background.Abstraction
Basic interfaces and helpers library.
- Basic interfaces and factory classes:
- Work interfaces:
IWork
,IWork<TResult>
,IAsyncWork
,IAsyncWork<TResult>
WorkFactory
for creating simple work instances from delegates- Resource access interfaces:
IAccess<TResource>
,IAccess<TResource, TResult>
,IAsyncAccess<TResource>
,IAsyncAccess<TResource, TResult>
AccessFactory
for creating simple access instances from delegatesIConveyorMachine<TData, TResult>
for conveyor data processing machinesIActivatable
andIThrottling
for shared resources and conveyor machines with particular usage strategies
- Work interfaces:
- Service interfaces
IWorkQueue
andIPriorityWorkQueue
for background task queueIAccessQueue<TResource>
andIPriorityAccessQueue<TResource>
for shared resource access queueIConveyor<TData, TResult>
andIPriorityConveyor<TData, TResult>
for background data processing conveyor
- Helpers and extensions including methods to use services together (eg. enqueue
IAccess<TResource>
toIWorkQueue
) if needed
AInq.Background
Queues and conveyor implementations.
- Background work queue
- Optional support for configurable parallelism
- Optional support for prioritizing
- Use
WorkQueueInjection
to regiter service or create for internal usage
- Shared resource access queue
- Support single or many resource instances with different lifetime
- Optional support for prioritizing
- Use
AccessQueueInjection
to regiter service or create for internal usage
- Background data processing conveyor
- Support single or many conveyor machines with different lifetime
- Optional support for prioritizing
- Use
ConveyorInjection
to regiter service or create for internal usage
You can extend functionality by implementing custom ITaskWrapper
, ITaskManager
or ITaskProcessor
and combine with existing ones to create more service variants.
AInq.Background.Scheduler.Abstraction
Work scheduler interfaces and helpers library.
- Service interfaces
IWorkScheduler
for background work scheduler
- Helpers and extensions including methods to use services together (eg. schedule
IAccess<TResource>
toIWorkScheduler
) if needed
AInq.Background.Scheduler
Work scheduler implementation.
- Support delayed, time-scheduled, and cron-scheduled work
- Use
WorkSchedulerInjection
to regiter service or create for internal usage
You can extend functionality by implementing custom IScheduledTaskWrapper
or IWorkSchedulerManager
and combine with existing ones to create more service variants.
NOTE: Cronos is used for parsing Cron expressions - follow documentation for supported options. Format with seconds is supported.
AInq.Background.Enumerable
NEW Batch processing extensions for IWorkQueue
, IAccessQueue<TResource>
and IConveyor<TData, TResult>
AInq.Background.Startup
NEW Startup work utility for running some work before host start
Support interaction with background work queue
Documentation
As for now documentation is provided in this document and by XML documentation inside packages.
Contribution
These packages are in active production use, all fixes and improvements will be published after some internal testing.
If you find a bug, have a question or something else - you are friendly welcome to open an issue.
License
Copyright © 2020-2021 Anton Andryushchenko. AInq.Background is licensed under Apache License 2.0
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- AInq.Background.Scheduler.Abstraction (>= 5.0.0)
- Cronos (>= 0.7.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.Reactive (>= 5.0.0)
-
.NETStandard 2.0
- AInq.Background.Scheduler.Abstraction (>= 5.0.0)
- Cronos (>= 0.7.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.Reactive (>= 5.0.0)
-
.NETStandard 2.1
- AInq.Background.Scheduler.Abstraction (>= 5.0.0)
- Cronos (>= 0.7.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.Reactive (>= 5.0.0)
-
net5.0
- AInq.Background.Scheduler.Abstraction (>= 5.0.0)
- Cronos (>= 0.7.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.Reactive (>= 5.0.0)
-
net6.0
- AInq.Background.Scheduler.Abstraction (>= 5.0.0)
- Cronos (>= 0.7.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- System.Reactive (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
5.7.0 | 95 | 11/13/2024 |
5.6.0 | 680 | 11/17/2023 |
5.5.3 | 330 | 6/20/2023 |
5.5.2 | 203 | 5/23/2023 |
5.5.1 | 431 | 12/3/2022 |
5.5.0 | 362 | 11/14/2022 |
5.5.0-preview.3 | 163 | 10/24/2022 |
5.5.0-preview.2 | 117 | 10/13/2022 |
5.5.0-preview.1 | 120 | 10/2/2022 |
5.4.1 | 524 | 8/9/2022 |
5.4.0 | 541 | 5/11/2022 |
5.3.1 | 506 | 3/28/2022 |
5.3.1-preview.2 | 132 | 3/28/2022 |
5.3.1-preview.1 | 133 | 3/28/2022 |
5.3.0 | 481 | 3/23/2022 |
5.3.0-rc.3 | 132 | 3/20/2022 |
5.3.0-rc.2 | 130 | 3/17/2022 |
5.3.0-rc.1 | 134 | 3/16/2022 |
5.2.3 | 482 | 3/9/2022 |
5.2.2 | 339 | 12/27/2021 |
5.2.1 | 333 | 12/17/2021 |
5.2.0 | 327 | 12/13/2021 |
5.1.0 | 325 | 12/3/2021 |
5.0.0 | 443 | 11/8/2021 |
5.0.0-rc.2 | 180 | 10/12/2021 |
5.0.0-rc.1 | 160 | 10/7/2021 |
4.2.0-preview.4 | 152 | 10/6/2021 |
4.2.0-preview.3 | 205 | 9/28/2021 |
4.2.0-preview.2 | 172 | 9/15/2021 |
4.2.0-preview | 158 | 8/23/2021 |
4.1.2 | 483 | 5/14/2021 |
4.1.1.1 | 458 | 5/14/2021 |
4.1.1 | 430 | 5/10/2021 |
4.0.2 | 451 | 4/25/2021 |
4.0.1 | 488 | 3/15/2021 |
4.0.0 | 469 | 3/14/2021 |
3.0.0 | 531 | 12/21/2020 |
2.3.2 | 664 | 7/12/2020 |
2.3.1 | 589 | 7/3/2020 |
2.3.0 | 558 | 7/2/2020 |
2.2.0 | 677 | 6/20/2020 |
2.1.0 | 581 | 6/15/2020 |
2.0.1 | 582 | 6/11/2020 |
2.0.0 | 591 | 6/9/2020 |
[ADD] net6.0 support
[ADD] netcoreapp3.1 support
[FIX] Cancellation handling in Enumerable extension
[FIX] Conveyor chain max attempts calculation
[FIX] Missed null argument check
[IMP] Disposable handling in Task Processor
[IMP] Minor internal improvement
[UPD] Package references