Skip to Content

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