Example #1
0
        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);
            }
        }
Example #2
0
        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}");
            }
        }