Skip to main content

Configuration

This guide covers how to configure TickerQ in your .NET application.

Basic Setup

1. Program.cs Configuration

Add TickerQ services to your Program.cs:

using TickerQ.DependencyInjection;
using TickerQ.EntityFrameworkCore.DependencyInjection;
using TickerQ.Dashboard.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// Configure DbContext
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// Configure TickerQ
builder.Services.AddTickerQ(options =>
{
options.SetMaxConcurrency(4);
options.AddOperationalStore<ApplicationDbContext>(efOpt =>
{
efOpt.UseModelCustomizerForMigrations();
});
options.AddDashboard(options =>
{
options.BasePath = "/dashboard";
options.EnableBasicAuth = true;
});
options.SetExceptionHandler<TickerExceptionHandler>();
});

var app = builder.Build();

// Enable TickerQ middleware
app.UseTickerQ(qStartMode: TickerQ.Utilities.Enums.TickerQStartMode.Immediate);

app.Run();

2. Configuration Options

Max Concurrency

options.SetMaxConcurrency(4); // Maximum 4 concurrent jobs

Operational Store

options.AddOperationalStore<ApplicationDbContext>(efOpt =>
{
efOpt.UseModelCustomizerForMigrations();
// efOpt.CancelMissedTickersOnAppStart(); // Optional
});

Dashboard Configuration

options.AddDashboard(options =>
{
options.BasePath = "/dashboard"; // Dashboard URL path
options.EnableBasicAuth = true; // Enable authentication
});

Exception Handler

options.SetExceptionHandler<TickerExceptionHandler>();

appsettings.json Configuration

Basic Authentication

{
"TickerQBasicAuth": {
"username": "admin",
"password": "admin"
}
}

Cron Expressions

{
"CronTicker": {
"EveryMinute": "* * * * *"
}
}

Logging Configuration

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning",
"Microsoft.EntityFrameworkCore": "Warning"
}
}
}

Service Registration

Register your job classes in the DI container:

// Repository DI
builder.Services.AddScoped(typeof(IRepository<>), typeof(Repository<>));

// Services DI
builder.Services.AddScoped<RequestService>();
builder.Services.AddScoped<BackgroundJobs>();
builder.Services.AddScoped<JobWithData>();

Middleware Order

Ensure TickerQ middleware is added in the correct order:

var app = builder.Build();

// Other middleware
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();

// TickerQ middleware
app.UseTickerQ(qStartMode: TickerQ.Utilities.Enums.TickerQStartMode.Immediate);

app.MapControllers();

Start Modes

TickerQ supports different start modes:

  • Immediate: Start processing jobs immediately
  • Delayed: Start after a delay
  • Manual: Start manually via API
app.UseTickerQ(qStartMode: TickerQ.Utilities.Enums.TickerQStartMode.Immediate);

Next Steps

Now that TickerQ is configured, learn about Cron Jobs for scheduled background tasks.