Exemplo n.º 1
0
        public void When_some_of_scheduled_jobs_fail_System_still_executes_others()
        {
            var successTasks = new[] { 0.5, 1.5, 2.5 };
            var failTasks    = new[] { 1.0, 2.0 };

            foreach (var task in successTasks)
            {
                var text        = task.ToString(CultureInfo.InvariantCulture);
                var testCommand = new SuccessCommand(text);
                _scheduler.Tell(new ScheduleCommand(testCommand, new ScheduleKey(Guid.Empty, text, text), CreateOptions(task, Timeout)));
            }
            foreach (var failTask in failTasks)
            {
                var text            = failTask.ToString(CultureInfo.InvariantCulture);
                var failTaskCommand = new FailCommand();
                _scheduler.Tell(new ScheduleCommand(failTaskCommand, new ScheduleKey(Guid.Empty, text, text), CreateOptions(failTask, Timeout)));
            }

            var successTaskIds = successTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray();
            var failTaskIds    = failTasks.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToArray();

            Throttle.Assert(() =>
            {
                ResultHolder.Contains(successTaskIds);
                Assert.True(failTaskIds.All(x => ResultHolder.Get(x) == null));
            }, minTimeout: TimeSpan.FromSeconds(3));
        }
Exemplo n.º 2
0
 public void Fail(Exception e)
 {
     if (FailCommand != null)
     {
         FailCommand.Data = new Dictionary <String, object>();
         FailCommand.Data.Add("Error", e);
         FailCommand.Data.Add("Task", this);
         FailCommand.Execute();
     }
 }
Exemplo n.º 3
0
        public Message Publish(Message message)
        {
            _timer.Change(_defaultWaitTime, _defaultWaitTime);
            ICommandHandler handler = null;
            var             result  = new Message();
            var             header  = new MessageHeader();

            header.RequestKey  = message.Header.ResponseKey;
            header.ResponseKey = message.Header.ResponseKey;
            header.RouteType   = message.Header.RouteType;
            header.RunCount    = message.Header.RunCount;
            result.Header      = header;

            try
            {
                if (message.TypeName != null)
                {
                    if (GetHandler(message.BodyType, out handler))
                    {
                        var cmd          = message.Body;
                        var handleResult = ((dynamic)handler).Handle((dynamic)cmd);

                        result.Body = handleResult;
                    }

                    if (handler == null)
                    {
                        var cmd = new NotImplExceptionCommand();
                        cmd.TypeName         = message.BodyType;
                        cmd.OriginalObject   = message.Body;
                        cmd.ExceptionMessage = "no provider";
                        result.Body          = cmd;
                    }
                }
            }
            catch (NotImplementedException notImplEx)
            {
                var cmd = new NotImplExceptionCommand();
                cmd.TypeName         = message.BodyType;
                cmd.OriginalObject   = message.Body;
                cmd.ExceptionMessage = notImplEx.Message;
                result.Body          = cmd;
            }
            catch (Exception ex)
            {
                var cmd = new FailCommand();
                cmd.OriginalObject   = message.Body;
                cmd.ExceptionMessage = ex.Message;
                result.Body          = cmd;
            }

            return(result);
        }