Manuelle Worker-Verarbeitung
Bei der manuellen Verarbeitung haben Sie volle Kontrolle über den Worker-Lifecycle.
Einfacher Worker
using ProcessCube.Engine;
using ProcessCube.Engine.ExternalTaskWorkers;
var engineAddress = "http://localhost:8000";
var worker = ExternalTaskWorkerBuilder
.Create(engineAddress)
.WithTopic("ProcessOrder")
.UseHandlerMethod(async (externalTask) =>
{
var input = externalTask.Tokens[TokenType.OnEnter].GetPayload<OrderInput>();
Console.WriteLine($"Processing order: {input.OrderId}");
// Geschäftslogik
await Task.Delay(1000);
return new OrderResult(input.OrderId, "Completed");
})
.Build();
await worker.StartAsync();
Console.WriteLine("Worker läuft. Enter zum Beenden...");
Console.ReadLine();
await worker.StopAsync();
internal sealed record OrderInput(string OrderId, decimal Amount);
internal sealed record OrderResult(string OrderId, string Status);Handler-Klassen
public class OrderProcessingHandler
{
public async Task<OrderResult> HandleAsync(ExternalTask externalTask)
{
var input = externalTask.Tokens[TokenType.OnEnter].GetPayload<OrderInput>();
// Verarbeitung
await ProcessOrderAsync(input);
return new OrderResult(input.OrderId, "Success");
}
private async Task ProcessOrderAsync(OrderInput input)
{
// Geschäftslogik hier
await Task.Delay(1000);
}
}
// Verwendung
var handler = new OrderProcessingHandler();
var worker = ExternalTaskWorkerBuilder
.Create(engineAddress)
.WithTopic("ProcessOrder")
.UseHandlerMethod(handler.HandleAsync)
.Build();Nächste Schritte
- Hosting Integration - ASP.NET Core Integration
- External Task Workers - Zurück zur Übersicht