示例#1
0
        public static AdditionalMessageData GenerateData(QueueProducerConfiguration configuration)
        {
            if (configuration.GetMessageExpiration().HasValue ||
                configuration.GetMessageDelay().HasValue ||
                configuration.GetMessageRoute().HasValue)
            {
                var data = new AdditionalMessageData();

                // ReSharper disable once PossibleInvalidOperationException
                if (configuration.GetMessageExpiration().HasValue&& configuration.GetMessageExpiration().Value)
                {
                    data.SetExpiration(TimeSpan.FromSeconds(1));
                }

                // ReSharper disable once PossibleInvalidOperationException
                if (configuration.GetMessageDelay().HasValue&& configuration.GetMessageDelay().Value)
                {
                    data.SetDelay(TimeSpan.FromSeconds(5));
                }

                // ReSharper disable once PossibleInvalidOperationException
                if (configuration.GetMessageRoute().HasValue&& configuration.GetMessageRoute().Value)
                {
                    data.Route = DefaultRoute;
                }

                return(data);
            }

            return(new AdditionalMessageData());
        }
 public void Create_Default()
 {
     var id = Substitute.For<IMessage>();
     var message = new AdditionalMessageData();
     var test = new SendMessageCommand(id, message);
     Assert.Equal(id, test.MessageToSend);
     Assert.Equal(message, test.MessageData);
 }
示例#3
0
        /// <summary>
        /// Creates an expired message 24 hours from now
        /// </summary>
        /// <returns></returns>
        private static IAdditionalMessageData ExpiredDataFuture()
        {
            var data = new AdditionalMessageData();

            data.SetExpiration(TimeSpan.FromDays(1));
            if (_userData)
            {
                data.AdditionalMetaData.Add(new AdditionalMetaData <int>("DayOfWeek", Convert.ToInt32(DateTime.Today.DayOfWeek)));
            }
            return(data);
        }
        public void AdditionalMessageData()
        {
            IAdditionalMessageData test = new AdditionalMessageData();

            test.SetDelay(TimeSpan.FromSeconds(1));
            Assert.Equal(TimeSpan.FromSeconds(1), test.GetDelay());

            test.SetExpiration(TimeSpan.FromSeconds(5));
            Assert.Equal(TimeSpan.FromSeconds(5), test.GetExpiration());

            test.SetExpiration(null);
            Assert.Null(test.GetExpiration());
        }
示例#5
0
        public void GetExpiration_Test()
        {
            var data = new AdditionalMessageData();

            Assert.Null(data.GetExpiration());

            var time = DateTime.UtcNow;

            data.SetExpiration(time.TimeOfDay);
            Assert.Equal(time.TimeOfDay, data.GetExpiration());

            time = DateTime.UtcNow.AddHours(1);
            data.SetExpiration(time.TimeOfDay);
            Assert.Equal(time.TimeOfDay, data.GetExpiration());
        }
示例#6
0
        public static AdditionalMessageData GenerateData(QueueProducerConfiguration configuration)
        {
            if (configuration.Options().EnableMessageExpiration ||
                configuration.Options().EnableDelayedProcessing)
            {
                var data = new AdditionalMessageData();

                if (configuration.Options().EnableMessageExpiration)
                {
                    data.SetExpiration(TimeSpan.FromSeconds(1));
                }

                if (configuration.Options().EnableDelayedProcessing)
                {
                    data.SetDelay(TimeSpan.FromSeconds(5));
                }

                return(data);
            }

            return(new AdditionalMessageData());
        }
示例#7
0
        public static AdditionalMessageData GenerateData(QueueProducerConfiguration configuration)
        {
            if (configuration.Options().EnableMessageExpiration ||
                configuration.Options().EnableDelayedProcessing ||
                configuration.Options().EnablePriority ||
                configuration.Options().AdditionalColumns.Count > 0)
            {
                var data = new AdditionalMessageData();

                if (configuration.Options().EnableMessageExpiration)
                    data.SetExpiration(TimeSpan.FromSeconds(1));

                if (configuration.Options().EnableDelayedProcessing)
                    data.SetDelay(TimeSpan.FromSeconds(5));

                if (configuration.Options().EnablePriority)
                    data.SetPriority(5);

                if (configuration.Options().AdditionalColumns.Count > 0)
                {
                    data.AdditionalMetaData.Add(new AdditionalMetaData<int>("OrderID", 123));
                }

                return data;
            }

            return null;
        }
示例#8
0
 private List<QueueMessage<SimpleMessage, IAdditionalMessageData>> GenerateMessages(List<SimpleMessage> jobs,
     TimeSpan? delay = null,
     TimeSpan? expiration = null,
     ushort? priority = null
     )
 {
     var messages = new List<QueueMessage<SimpleMessage, IAdditionalMessageData>>(jobs.Count);
     foreach (var message in jobs)
     {
         if (delay.HasValue || expiration.HasValue || priority.HasValue)
         {
             var data = new AdditionalMessageData();
             if (priority.HasValue)
             {
                 data.SetPriority(priority.Value);
             }
             if (delay.HasValue)
             {
                 data.SetDelay(delay.Value);
             }
             if (expiration.HasValue)
             {
                 data.SetExpiration(expiration.Value);
             }
             messages.Add(new QueueMessage<SimpleMessage, IAdditionalMessageData>(message, data));
         }
         else
         {
             messages.Add(new QueueMessage<SimpleMessage, IAdditionalMessageData>(message, null));
         }
     }
     return messages;
 }
示例#9
0
        public static AdditionalMessageData GenerateData(QueueProducerConfiguration configuration)
        {
            if (configuration.GetMessageExpiration().HasValue ||
                configuration.GetMessageDelay().HasValue)
            {
                var data = new AdditionalMessageData();

                // ReSharper disable once PossibleInvalidOperationException
                if (configuration.GetMessageExpiration().HasValue && configuration.GetMessageExpiration().Value)
                    data.SetExpiration(TimeSpan.FromSeconds(1));

                // ReSharper disable once PossibleInvalidOperationException
                if (configuration.GetMessageDelay().HasValue && configuration.GetMessageDelay().Value)
                    data.SetDelay(TimeSpan.FromSeconds(5));

                return data;
            }

            return null;
        }
示例#10
0
        /// <summary>
        /// Sends the specified action to the specified queue.
        /// </summary>
        /// <param name="job">The job.</param>
        /// <param name="scheduledTime">The scheduled time.</param>
        /// <param name="expressionToRun">The expression to run.</param>
        /// <returns></returns>
        public async Task<IJobQueueOutputMessage> SendAsync(IScheduledJob job, DateTimeOffset scheduledTime, LinqExpressionToRun expressionToRun)
        {
            var data = SendPreChecks(job.Name, scheduledTime);
            if (data != null)
                return data;

            var messageData = new AdditionalMessageData();
            SetMetaDataForJob(job.Name, scheduledTime,
                new DateTimeOffset(GetTimeFactory.Create().GetCurrentUtcDate()), job.Route, messageData);

            var message = await Queue.SendAsync(expressionToRun, messageData).ConfigureAwait(false);
            var result = ProcessResult(job, scheduledTime, message);
            if (result != null) return result;
            //try one more time
            result = ProcessResult(job, scheduledTime,
                await Queue.SendAsync(expressionToRun, messageData).ConfigureAwait(false));
            return result ?? new JobQueueOutputMessage(JobQueuedStatus.Failed);
        }