public static ProcessorBuilder<MessagePayload> ToMessageRepeater(
            this ProcessorBuilder<MessagePayload> builder, 
            IMessageCache messageCache, 
            ISystemTime systemTime, 
            ITaskRepeater taskRepeater, 
            IRepeatStrategy strategy)
        {
            var repeater = new MessageRepeater(strategy, systemTime, messageCache);
            taskRepeater.Register(TimeSpan.FromSeconds(1), repeater.Repeat);

            return builder.ToProcessor(repeater);
        }
        public void Repeat(MessageRepeater repeater, IMessageCache messageCache, ISystemTime systemTime)
        {
            IEnumerable<MessagePayload> messages = messageCache.GetOrderedMessages();

            messages.ForEach(m =>
            {
                if (m.GetAmountSent() > 0 && m.GetLastTimeSent() <= systemTime.GetCurrentDate().Add(-RepeatEvery))
                {
                    LogMessage(m);
                    repeater.InputMessage(m);
                }
            });
        }
 public void Repeat(MessageRepeater repeater, IMessageCache messageCache, ISystemTime systemTime)
 {
 }