static int Main(string[] args) { // shift-jis を使えるように Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); try { var parsed = _parser.Parse(args); if (!_validator.Validate(parsed, out var message)) { _messenger.Send(message); return(1); } var executor = _executorFactory.Create(parsed); return(executor.Execute(parsed)); } catch (Exception ex) { _messenger.Send(ex.Message); return(1); } }
public async Task Handle(HubConnection connection, JobContext context, CancellationToken token = default) { if (context == null) { _logger.LogError("Receive null context."); return; } Enum.TryParse(context.Parameters.GetValue(SwarmConsts.ExecutorProperty), out Executor executor); var executorInstance = _executorFactory.Create(executor); if (executorInstance == null) { _logger.LogError($"Executor {executor} is not support yet"); return; } var delay = (context.FireTimeUtc - DateTime.UtcNow).TotalSeconds; if (delay > 10) { _logger.LogError( $"Trigger job [{context.Name}, {context.Group}, {context.TraceId}, {context.CurrentSharding}] timeout: {delay}."); await executorInstance.OnExited(context, connection, 0, "Timeout from server"); return; } try { _logger.LogInformation( $"Try execute job [{context.Name}, {context.Group}, {context.TraceId}, {context.CurrentSharding}]"); await executorInstance.Execute(context, connection); } catch (Exception ex) { _logger.LogError(ex, $"Execute job [{context.Name}, {context.Group}] failed."); await executorInstance.OnExited(context, connection, 0, $"Failed: {ex.Message}"); } }