Быстрый старт
Минимальный запуск Jobby в ASP.NET Core: установить пакеты, описать одну задачу, поднять сервер и поставить тестовую задачу в очередь.
Требования
- .NET 8 или новее
- PostgreSQL
- Новый или существующий ASP.NET Core проект
1. Установка пакетов
shell
dotnet add package Jobby.Core
dotnet add package Jobby.Postgres
dotnet add package Jobby.AspNetCore2. Создание задачи
Создайте команду и обработчик. Jobby выполняет обработчики в фоне.
csharp
using Jobby.Core.Interfaces;
using Jobby.Core.Models;
using Microsoft.Extensions.Logging;
public sealed class HelloJob : IJobCommand
{
public string Message { get; init; } = "Hello from Jobby";
public static string GetJobName() => "hello-job";
}
public sealed class HelloJobHandler : IJobCommandHandler<HelloJob>
{
private readonly ILogger<HelloJobHandler> _logger;
public HelloJobHandler(ILogger<HelloJobHandler> logger)
{
_logger = logger;
}
public Task ExecuteAsync(HelloJob command, JobExecutionContext ctx)
{
_logger.LogInformation(
"Job executed. Message: {Message}. Attempt: {Attempt}",
command.Message,
ctx.StartedCount);
return Task.CompletedTask;
}
}3. Настройка Jobby
Добавьте Jobby в Program.cs.
ConnectionStrings__Jobby — это стандартный ключ строки подключения в ASP.NET Core. Пример значения: Host=localhost;Username=postgres;Password=postgres;Database=jobby_quickstart
csharp
using Jobby.AspNetCore;
using Jobby.Core.Interfaces;
using Jobby.Postgres.ConfigurationExtensions;
using Npgsql;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("Jobby")
?? throw new InvalidOperationException("Connection string 'Jobby' was not found.");
builder.Services.AddSingleton(NpgsqlDataSource.Create(connectionString));
builder.Services.AddJobbyServerAndClient(jobby =>
{
jobby.AddJobsFromAssemblies(typeof(HelloJob).Assembly);
jobby.ConfigureJobby((sp, config) =>
{
config.UsePostgresql(sp.GetRequiredService<NpgsqlDataSource>());
});
});
var app = builder.Build();
// Создание или обновление таблиц Jobby
app.Services.GetRequiredService<IJobbyStorageMigrator>().Migrate();
// Постановка тестовой задачи в очередь при старте приложения
var jobbyClient = app.Services.GetRequiredService<IJobbyClient>();
await jobbyClient.EnqueueCommandAsync(new HelloJob
{
Message = "Jobby is working"
});
app.MapGet("/", () => "Jobby quick start is running");
app.Run();4. Запуск приложения
Задайте строку подключения и запустите приложение:
shell
ConnectionStrings__Jobby="Host=localhost;Username=postgres;Password=postgres;Database=jobby_quickstart" dotnet runЕсли используете appsettings.json, добавьте:
json
{
"ConnectionStrings": {
"Jobby": "Host=localhost;Username=postgres;Password=postgres;Database=jobby_quickstart"
}
}5. Что должно произойти
При старте Jobby:
- создаст свои таблицы, если их ещё нет
- запустит фоновую обработку
- поставит
HelloJobв очередь - почти сразу выполнит её
В логах должно появиться сообщение примерно такого вида:
text
Job executed. Message: Jobby is working. Attempt: 1