Skip to Content
DocsClientsDotnetExternal TasksManuelle Worker-Verarbeitung

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