Atomizer 0.0.1
See the version list below for details.
dotnet add package Atomizer --version 0.0.1
NuGet\Install-Package Atomizer -Version 0.0.1
<PackageReference Include="Atomizer" Version="0.0.1" />
<PackageVersion Include="Atomizer" Version="0.0.1" />
<PackageReference Include="Atomizer" />
paket add Atomizer --version 0.0.1
#r "nuget: Atomizer, 0.0.1"
#:package Atomizer@0.0.1
#addin nuget:?package=Atomizer&version=0.0.1
#tool nuget:?package=Atomizer&version=0.0.1
Atomizer
Break down complexity. Scale with confidence. Atomizer transforms large-scale job processing into atomic, reliable, and easily managed unitsβmaking distributed systems simple, robust, and a joy to work with.
Overview
Atomizer is a modern, high-performance job scheduling and queueing framework for ASP.NET Core. Built for cloud-native, distributed applications, but also perfect for smaller setups.
- Effortless distributed scaling: Atomizer works seamlessly in clustered setups, letting you process jobs across multiple servers for true horizontal scalability.
- Flexible architecture: Plug in your preferred storage backend, configure multiple queues, and extend with custom drivers or handlers.
- Reliable and robust: Enjoy graceful shutdowns, automatic retries, and job visibility timeouts to ensure jobs are never lost or duplicated.
- Developer-friendly: Atomizer integrates with ASP.NET Core DI, logging, and modern C# features, so you can focus on your business logic.
Features
- π Distributed Processing β Scale out to as many servers as your storage backend supports; Atomizer coordinates job execution across the cluster.
- ποΈ Multiple Storage Backends β Use Entity Framework Core for durable, database-backed queues; in-memory for fast local development & testing; Redis support coming soon.
- π Multiple Queues β Configure independent queues with custom processing options for each workload.
- π§© Extensible Drivers & Handlers β Easily add new storage drivers or job handlers; auto-register handlers from assemblies.
- β»οΈ Retry Policies β Automatic, configurable retries to keep your jobs running smoothlyβeven when things go wrong.
- π Graceful Shutdown β Ensure in-flight jobs finish or are safely released for re-processing during shutdowns.
- π¦ Batch Processing β Tune throughput with batch size and parallelism settings per queue.
- β³ Visibility Timeout β Prevent job duplication by locking jobs during processing.
- π§ͺ In-Memory Driver β Perfect for local development and testing; spin up queues instantly with zero setup.
- π ASP.NET Core Integration β Works with DI, logging, and modern C# idioms.
Planned Features
- β° Recurring Scheduled Jobs β Cron-like recurring execution for time-based workflows.
- π Dashboard β Live monitoring, retry/dead-letter management, and operational insights.
- π FIFO Processing β Guarantee jobs are processed in strict order, without overlap.
- β‘ Redis Driver β Lightning-fast, distributed, in-memory queues for massive scale.
- π‘οΈ Advanced Retry Policies β Backoff strategies, fixed intervals, and more.
Quick Start
Get up and running in minutes:
1. Install the package
// Add Atomizer core and EF Core storage support
dotnet add package Atomizer
dotnet add package Atomizer.EntityFrameworkCore
2. Configure Atomizer
Set up Atomizer in your ASP.NET Core project:
builder.Services.AddAtomizer(options =>
{
// Configure the default queue
// (optional, a default queue is created automatically as below)
options.AddQueue(QueueKey.Default, queue =>
{
queue.DegreeOfParallelism = 4; // Max 4 jobs processed concurrently
queue.BatchSize = 10; // Retrieve 10 jobs at a time
queue.VisibilityTimeout = TimeSpan.FromMinutes(5); // Lock jobs for 5 minutes
queue.StorageCheckInterval = TimeSpan.FromSeconds(15); // Poll for new jobs every 15 seconds
});
// Add more queues as needed
options.AddQueue("product", queue =>
{
queue.DegreeOfParallelism = 2;
queue.BatchSize = 5;
});
// Register job handlers automatically
options.AddHandlersFrom<AssignStockJobHandler>();
// Use EF Core-backed job storage
options.UseEntityFrameworkCoreStorage<ExampleDbContext>();
});
// Add Atomizer processing services
builder.Services.AddAtomizerProcessing();
Inside your DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.AddAtomizerEntities();
// ...other model config...
}
3. Define a Job Handler
Create a handler for your job payload:
public record SendNewsletterCommand(Product Product);
public class SendNewsletterJob(INewsletterService newsletterService, IEmailService emailService)
: IAtomizerJob<SendNewsletterCommand>
{
public async Task HandleAsync(SendNewsletterCommand payload, JobContext context)
{
var subscribers = await newsletterService.GetSubscribersAsync(payload.Product.CategoryId);
var emails = new List<Email>();
foreach (var subscriber in subscribers)
{
emails.Add(new Email { /* ... */ });
}
await Task.WhenAll(emails.ConvertAll(email => emailService.SendEmailAsync(email)));
}
}
4. Enqueue (or schedule) a Job
Add jobs to the queue from your application code:
app.MapPost(
"/products",
async ([FromServices] IAtomizerClient atomizerClient, [FromServices] ExampleDbContext dbContext) =>
{
var product = new Product { /* ... */, CategoryId = Guid.NewGuid() };
dbContext.Products.Add(product);
await dbContext.SaveChangesAsync();
await atomizerClient.EnqueueAsync(new SendNewsletterCommand(product));
return Results.Created($"/products/{product.Id}", product);
}
);
Contributing
- Fork the repository.
- Create a new branch (feature/xyz).
- Commit your changes with clear messages.
- Submit a PR with details of your changes and test coverage.
License
This project is licensed under the MIT License. See the LICENSE file for details
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. 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 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
- System.Threading.Channels (>= 6.0.0)
-
net6.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
- System.Threading.Channels (>= 6.0.0)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- System.Text.Json (>= 6.0.0)
- System.Threading.Channels (>= 6.0.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Atomizer:
| Package | Downloads |
|---|---|
|
Atomizer.EntityFrameworkCore
Atomizer.EntityFrameworkCore provides an Entity Framework Core storage implementation for Atomizer |
|
|
Atomizer.Dashboard
Atomizer.Dashboard provides a real-time monitoring dashboard for Atomizer background jobs and schedules |
|
|
Atomizer.Redis
Atomizer.Redis provides a Redis storage implementation for Atomizer using StackExchange.Redis |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.6.3 | 185 | 5/16/2026 |
| 0.6.2 | 193 | 5/16/2026 |
| 0.6.1 | 191 | 5/16/2026 |
| 0.6.0 | 151 | 5/16/2026 |
| 0.5.0 | 160 | 5/14/2026 |
| 0.5.0-rc.3 | 69 | 5/14/2026 |
| 0.5.0-rc.2 | 67 | 5/13/2026 |
| 0.5.0-rc.1 | 73 | 5/13/2026 |
| 0.4.0 | 138 | 5/5/2026 |
| 0.3.0 | 126 | 5/4/2026 |
| 0.2.0 | 162 | 3/10/2026 |
| 0.1.3 | 292 | 8/29/2025 |
| 0.1.2 | 311 | 8/26/2025 |
| 0.1.1 | 198 | 8/22/2025 |
| 0.1.0 | 234 | 8/21/2025 |
| 0.0.1 | 253 | 8/20/2025 |