public async Task Run(RunnerContext runnerContext, CancellationToken cancellationToken) { var busControlFactory = runnerContext.LifetimeScope.Resolve <IBusControlFactory>(); var busControl = busControlFactory.CreateBusControl(); var busHandle = await busControl.StartAsync(cancellationToken); try { System.Console.WriteLine($"Starting execution of workflow [{Name}]"); var workflowMessageTransportFactory = new WorkflowMessageRabbitMqTransportFactory(busControlFactory); var workflowCommandContext = CreateWorkflowCommandContext(runnerContext, workflowMessageTransportFactory); while (true) { var workflowCommand = GetWorkflowCommand(this); if (null == workflowCommand) { System.Console.WriteLine($"Finished execution of workflow [{Name}]"); return; } try { System.Console.WriteLine($"Starting command [{workflowCommand.Name}]"); await workflowCommand.Execute(workflowCommandContext, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { System.Console.WriteLine($"An error has occurred during command execution [{ex.Message}]"); } } } finally { await busHandle.StopAsync(cancellationToken); } }
protected override WorkflowCommandContextBase CreateWorkflowCommandContext(RunnerContext runnerContext, WorkflowMessageRabbitMqTransportFactory workflowMessageTransportFactory) { return(new PackageV01WorkflowCommandContext(runnerContext, workflowMessageTransportFactory.CreateMessageTransport(EndpointConfiguration.Address))); }
protected abstract WorkflowCommandContextBase CreateWorkflowCommandContext(RunnerContext runnerContext, WorkflowMessageRabbitMqTransportFactory workflowMessageTransportFactory);