Example #1
0
        public void Handle(ResumeScheduledMessageWithOffset message)
        {
            if (Data.LastUpdateCommandRequestUtc != null && Data.LastUpdateCommandRequestUtc > message.MessageRequestTimeUtc)
            {
                return;
            }
            Data.SchedulingPaused = false;
            var rescheduledTime = Data.OriginalMessageData.OriginalRequestSendTime.Add(message.Offset);

            Data.TimeoutCounter++;
            RequestUtcTimeout(rescheduledTime, new ScheduleEmailTimeout {
                TimeoutCounter = Data.TimeoutCounter
            });
            Bus.Publish(new MessageRescheduled
            {
                CoordinatorId      = Data.OriginalMessageData.RequestingCoordinatorId,
                ScheduleMessageId  = Data.ScheduleMessageId,
                RescheduledTimeUtc = rescheduledTime,
                // TODO : Should we remove the number or have a different thing for emails?
            });
            Bus.SendLocal(new ScheduleStatusChanged
            {
                RequestTimeUtc  = message.MessageRequestTimeUtc,
                ScheduleId      = message.ScheduleMessageId,
                ScheduleTimeUtc = rescheduledTime,
                Status          = MessageStatus.Scheduled
            });
            Data.LastUpdateCommandRequestUtc = message.MessageRequestTimeUtc;
        }
        public void ResumePausedSchedule_Data()
        {
            var sagaId            = Guid.NewGuid();
            var scheduleMessageId = Guid.NewGuid();

            var scheduleSmsForSendingLater = new ScheduleSmsForSendingLater {
                SmsData = new SmsData("1", "msg"), SmsMetaData = new SmsMetaData(), SendMessageAtUtc = DateTime.Now
            };
            var scheduledSmsData = new ScheduledSmsData
            {
                Id = sagaId,
                ScheduleMessageId   = scheduleMessageId,
                Originator          = "place",
                OriginalMessageId   = Guid.NewGuid().ToString(),
                OriginalMessage     = scheduleSmsForSendingLater,
                OriginalMessageData = new OriginalMessageData(scheduleSmsForSendingLater)
            };

            Test.Initialize();
            var rescheduleMessage = new ResumeScheduledMessageWithOffset(scheduleMessageId, new TimeSpan(0, 1, 0, 0));
            var rescheduledTime   = scheduledSmsData.OriginalMessage.SendMessageAtUtc.Add(rescheduleMessage.Offset);

            Test.Saga <ScheduleSms>()
            .WithExternalDependencies(a => { a.Data = scheduledSmsData; })
            .ExpectTimeoutToBeSetAt <ScheduleSmsTimeout>((state, span) => span == rescheduledTime)
            .ExpectPublish <MessageRescheduled>()
            .When(s => s.Handle(rescheduleMessage));
        }
Example #3
0
        public void ResumePausedSchedule_Data()
        {
            var sagaId            = Guid.NewGuid();
            var scheduleMessageId = Guid.NewGuid();

            var scheduledEmailData = new ScheduledEmailData
            {
                Id = sagaId,
                ScheduleMessageId   = scheduleMessageId,
                Originator          = "place",
                OriginalMessageId   = Guid.NewGuid().ToString(),
                OriginalMessageData = new OriginalEmailMessageData(new ScheduleEmailForSendingLater {
                    EmailData = new EmailData()
                })
                {
                    OriginalRequestSendTime = DateTime.Now
                }
            };

            Test.Initialize();
            var rescheduleMessage = new ResumeScheduledMessageWithOffset(scheduleMessageId, new TimeSpan(0, 1, 0, 0));
            var rescheduledTime   = scheduledEmailData.OriginalMessageData.OriginalRequestSendTime.Add(rescheduleMessage.Offset);

            Test.Saga <EmailScheduler>()
            .WithExternalDependencies(a => { a.Data = scheduledEmailData; })
            .ExpectTimeoutToBeSetAt <ScheduleEmailTimeout>((state, span) => span == rescheduledTime)
            .ExpectPublish <MessageRescheduled>()
            .When(s => s.Handle(rescheduleMessage));
        }
Example #4
0
        public void Handle(ResumeScheduledMessageWithOffset scheduleSmsForSendingLater)
        {
            if (Data.LastUpdateCommandRequestUtc != null && Data.LastUpdateCommandRequestUtc > scheduleSmsForSendingLater.MessageRequestTimeUtc)
            {
                return;
            }
            Data.SchedulingPaused = false;
            var rescheduledTime = Data.OriginalMessage.SendMessageAtUtc.Add(scheduleSmsForSendingLater.Offset);

            Data.TimeoutCounter++;
            RequestUtcTimeout(rescheduledTime, new ScheduleSmsTimeout {
                TimeoutCounter = Data.TimeoutCounter
            });
            Bus.Publish(new MessageRescheduled
            {
                CoordinatorId      = Data.OriginalMessageData.RequestingCoordinatorId,
                ScheduleMessageId  = Data.ScheduleMessageId,
                RescheduledTimeUtc = rescheduledTime,
                Number             = Data.OriginalMessageData.Number
            });
            Bus.SendLocal(new ScheduleStatusChanged
            {
                RequestTimeUtc  = scheduleSmsForSendingLater.MessageRequestTimeUtc,
                ScheduleId      = scheduleSmsForSendingLater.ScheduleMessageId,
                ScheduleTimeUtc = rescheduledTime,
                Status          = MessageStatus.Scheduled
            });
            Data.LastUpdateCommandRequestUtc = scheduleSmsForSendingLater.MessageRequestTimeUtc;
        }