Пример #1
0
        public void TestMemQueueOneThreadException()
        {
            var bill = new Bill {
                Count = 0
            };
            var memq = new MemQueue <Order>("Test3", x =>
            {
                if (x.Id % 2 == 0)
                {
                    throw new InvalidOperationException();
                }
                else
                {
                    bill.Count++;
                }
            });

            memq.Start();

            for (var i = 0; i < 100; i++)
            {
                memq.Enqueue(new Order {
                    Id = i
                });
            }

            while (!memq.IsEmpty)
            {
            }

            Thread.Sleep(10);
            Assert.Equal(50, bill.Count);
            memq.Close();
        }
Пример #2
0
        public void TestMemQueueOneThread()
        {
            var handler = new DefaultHandler <Order>();
            var memq    = new MemQueue <Order>("Test1", handler);

            Assert.Equal("Test1", memq.QueueName);
            Assert.True(memq.IsEmpty);
            memq.Start();

            var tasks = new Task[100];

            for (var i = 0; i < tasks.Length; i++)
            {
                var order = new Order {
                    Id = i
                };
                tasks[i] = new Task(() => memq.Enqueue(order));
            }

            foreach (var t in tasks)
            {
                t.Start();
            }
            Task.WaitAll(tasks);

            while (!memq.IsEmpty)
            {
                Thread.Sleep(10);
            }

            Thread.Sleep(20);

            Assert.Equal(100, handler.RequestCount);

            memq.Close();

            memq.Enqueue(new Order {
                Id = 101
            });
            memq.Enqueue(new Order {
                Id = 102
            });
            memq.Enqueue(new Order {
                Id = 103
            });

            Assert.Equal(100, handler.RequestCount);
            Assert.True(memq.IsEmpty);
        }
Пример #3
0
 public void Shutdown()
 {
     innerq.Close();
     //server.Close();
     //publisher.Close();
 }