Manuelle Verarbeitung
Handler können ohne Hosting-Extension direkt mit Callbacks oder Factories registriert werden.
Variante 1: Callback
IExternalTaskClient client = ClientFactory.CreateExternalTaskClient(engineUrl);
IExternalTaskWorker worker = client.SubscribeToExternalTaskTopic(
"BestellungVerarbeiten",
selector => selector.UseHandlerMethod<BestellungInput, BestellungOutput>(
async (input, task, ct) =>
{
// Geschäftslogik
return new BestellungOutput { Status = "Verarbeitet" };
}));
await worker.StartAsync(cancellationToken);Variante 2: Factory
IExternalTaskWorker worker = client.SubscribeToExternalTaskTopic(
"BestellungVerarbeiten",
selector => selector.UseHandlerFactory<BestellungHandler, BestellungInput, BestellungOutput>(
() => new BestellungHandler(new BestellService())));Handler-Klasse
public class BestellungHandler : IExternalTaskHandler<BestellungInput, BestellungOutput>
{
private readonly IBestellService _bestellService;
public BestellungHandler(IBestellService bestellService)
{
_bestellService = bestellService;
}
public async Task<BestellungOutput> HandleAsync(
BestellungInput input,
ExternalTask task,
CancellationToken cancellationToken)
{
Bestellung bestellung = await _bestellService.VerarbeiteAsync(input.BestellNr, cancellationToken);
return new BestellungOutput
{
Status = bestellung.Status,
LieferDatum = bestellung.GeschaetztesLieferDatum
};
}
}
public class BestellungInput
{
public string BestellNr { get; set; }
}
public class BestellungOutput
{
public string Status { get; set; }
public DateTime LieferDatum { get; set; }
}Nächste Schritte
- Hosting Integration — Automatische Handler-Erkennung mit DI
- Erweiterte Konfiguration — Worker-Settings und Health Checks