Exemplo n.º 1
0
        public async Task PubAndUnSub()
        {
            var count = 0;
            var mq    = new ThroughMessageQueue(CreateLogger <ThroughMessageQueue>());

            mq.Subscribe <string>("topic", msg => { Interlocked.Increment(ref count); });

            var i = 0;

            Task.Factory.StartNew(async() =>
            {
                for (; i < 50; ++i)
                {
                    await mq.PublishAsync("topic", new MessageData <string>
                    {
                        Data = "a"
                    });
                    await Task.Delay(100);
                }
            }).ConfigureAwait(false).GetAwaiter();
            await Task.Delay(1500);

            mq.Unsubscribe("topic");

            while (i < 50)
            {
                await Task.Delay(100);
            }

            Assert.True(count < 100);
        }
Exemplo n.º 2
0
        public void ParallelPubAndSub()
        {
            var count = 0;
            var mq    = new ThroughMessageQueue(CreateLogger <ThroughMessageQueue>());

            mq.Subscribe <string>("topic", msg => { Interlocked.Increment(ref count); });

            Parallel.For(0, 100, async i =>
            {
                await mq.PublishAsync("topic", new MessageData <string>
                {
                    Data = "a"
                });
            });
            var j = 0;

            while (count < 100 && j < 150)
            {
                Thread.Sleep(500);
                ++j;
            }

            Assert.Equal(100, count);
        }
Exemplo n.º 3
0
        public async Task PubAndSub()
        {
            int count = 0;
            var mq    = new ThroughMessageQueue(CreateLogger <ThroughMessageQueue>());

            mq.Subscribe <string>("topic", msg => { Interlocked.Increment(ref count); });
            for (int i = 0; i < 100; ++i)
            {
                await mq.PublishAsync("topic", new MessageData <string>
                {
                    Data = "a"
                });
            }

            int j = 0;

            while (count < 100 && j < 150)
            {
                Thread.Sleep(500);
                ++j;
            }

            Assert.Equal(100, count);
        }