예제 #1
0
        private void RunProducerInternal <TMessage>(
            IProducerQueue
            <TMessage> queue, long messageCount, Func <QueueProducerConfiguration, AdditionalMessageData> generateData, bool sendViaBatch)
            where TMessage : class
        {
            var numberOfJobs = Convert.ToInt32(messageCount);
            var jobs         = Enumerable.Range(0, numberOfJobs)
                               .Select(i => GenerateMessage.Create <TMessage>());

            if (sendViaBatch)
            {
                var messages = new List <QueueMessage <TMessage, IAdditionalMessageData> >(numberOfJobs);
                messages.AddRange(from job in jobs let data = generateData(queue.Configuration) select data != null ? new QueueMessage <TMessage, IAdditionalMessageData>(job, data) : new QueueMessage <TMessage, IAdditionalMessageData>(job, null));
                var result    = queue.Send(messages);
                var errorList = result.Where(p => result.Any(l => p.SendingException != null))
                                .ToList();
                if (result.HasErrors)
                {
                    Assert.False(result.HasErrors, errorList[0].SendingException.ToString());
                }
                else
                {
                    Assert.False(result.HasErrors);
                }
            }
            else
            {
                Parallel.ForEach(jobs, job =>
                {
                    var data = generateData(queue.Configuration);
                    if (data != null)
                    {
                        var result  = queue.Send(job, data);
                        var message = string.Empty;
                        if (result.SendingException != null)
                        {
                            message = result.SendingException.ToString();
                        }
                        Assert.False(result.HasError, message);
                    }
                    else
                    {
                        var result  = queue.Send(job);
                        var message = string.Empty;
                        if (result.SendingException != null)
                        {
                            message = result.SendingException.ToString();
                        }
                        Assert.False(result.HasError, message);
                    }
                });
            }
        }
        private async Task RunProducerInternalAsync <TMessage>(
            IProducerQueue
            <TMessage> queue, long messageCount, Func <QueueProducerConfiguration, AdditionalMessageData> generateData, bool sendViaBatch)
            where TMessage : class
        {
            var numberOfJobs = Convert.ToInt32(messageCount);
            var jobs         = Enumerable.Range(0, numberOfJobs)
                               .Select(i => GenerateMessage.Create <TMessage>());

            if (sendViaBatch)
            {
                var messages = new List <QueueMessage <TMessage, IAdditionalMessageData> >(numberOfJobs);
                messages.AddRange(from job in jobs let data = generateData(queue.Configuration) select data != null ? new QueueMessage <TMessage, IAdditionalMessageData>(job, data) : new QueueMessage <TMessage, IAdditionalMessageData>(job, null));
                var results = await queue.SendAsync(messages).ConfigureAwait(false);

                Assert.False(results.HasErrors);
            }
            else
            {
                foreach (var job in jobs)
                {
                    var data = generateData(queue.Configuration);
                    if (data != null)
                    {
                        var result = await queue.SendAsync(job, data).ConfigureAwait(false);

                        Assert.False(result.HasError);
                    }
                    else
                    {
                        var result = await queue.SendAsync(job).ConfigureAwait(false);

                        Assert.False(result.HasError);
                    }
                }
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            int interval  = 10;
            var generator = new GenerateMessage();
            var _sms      = new Sms();

            string token = ConfigurationManager.AppSettings["Token"];
            // string token = DecryptToken();
            string phoneNumber = ConfigurationManager.AppSettings["PhoneNumber"];


            // pobranie listy błędów
            var errors = new List <Error>
            {
                new Error {
                    Message = "błąd testowy 1", Date = DateTime.Now
                },
                new Error {
                    Message = "błąd testowy 2", Date = DateTime.Now
                },
            };

            var message = generator.GenerateErrors(errors, interval);

            Console.WriteLine(token);
            Console.WriteLine(phoneNumber);
            Console.WriteLine(message);

            _sms.Send(message, phoneNumber, token).Wait();

            var info = SmsSender2(message, phoneNumber, token);

            Console.WriteLine(info);

            Console.ReadLine();
        }