Example #1
0
        private void EchoTheMessage(GamePacket packet)
        {
            var correlation = packet.Correlation;

            var queue1 = ServiceBusMessagingFactory.GetTopicClientByName("playerevents");

            var msg1 = new BrokeredMessage(packet, new DataContractSerializer(typeof(GamePacket)));

            msg1.Properties["PlayerId"] = packet.PlayerId;

            queue1.Send(msg1);
        }
Example #2
0
        public void GamePacketReceiver_NoSession()
        {
            _correlation = Guid.NewGuid().ToString();

            var factory = new ServiceBusMessagingFactory(_backboneConfiguration);

            var receiver = new TestGamePacketReceiver(_configuration, factory);

            receiver.OnGamePacketCompleted += Receiver_OnGamePacketCompleted;
            receiver.OnListenerError       += Receiver_OnListenerError;

            Task.WaitAll(receiver.StartListening("GameEvents"));

            var client = factory.GetQueueClientByName("GameEvents").Result;

            for (var msg = 0; msg < 6; msg++)
            {
                var message = new Message
                {
                    CorrelationId = _correlation
                };
                client.SendAsync(message);
            }

            for (var msg = 0; msg < 50; msg++)
            {
                var packet = new GamePacket {
                    GameEvent = new GameEvent(), EventId = 100
                };
                var content = Encoding.Default.GetBytes(DatacontractSerializerHelper.Serialize(packet));
                var message = new Message
                {
                    CorrelationId = _correlation,
                    Body          = content
                };
                client.SendAsync(message);
            }

            var sw = new Stopwatch();

            sw.Start();
            while (sw.ElapsedMilliseconds < 50000 &&
                   (_errors != 6 || _success != 50))
            {
                Thread.Sleep(50);
            }
            sw.Stop();

            Assert.AreEqual(6, _errors);
            Assert.AreEqual(50, _success);
        }
Example #3
0
        public void SubscriptionByPlayerId()
        {
            _correlation = Guid.NewGuid().ToString();

            var factory = new ServiceBusMessagingFactory(_backboneConfiguration);

            for (var i = 100; i < 105; i++)
            {
                Task.WaitAll(factory.CreateSubscription("playerevents", $"{i}", $"PlayerId = '{i}'"));
            }

            var options = new MessageHandlerOptions(exceptionHandler)
            {
                AutoComplete = true
            };

            var subsClient100 = new SubscriptionClient(_backboneConfiguration.ConnectionString, "playerevents", "100");

            subsClient100.RegisterMessageHandler(handler, options);
            var subsClient101 = new SubscriptionClient(_backboneConfiguration.ConnectionString, "playerevents", "101");

            subsClient101.RegisterMessageHandler(handler, options);
            var subsClient102 = new SubscriptionClient(_backboneConfiguration.ConnectionString, "playerevents", "102");

            subsClient102.RegisterMessageHandler(handler, options);
            var subsClient103 = new SubscriptionClient(_backboneConfiguration.ConnectionString, "playerevents", "103");

            subsClient103.RegisterMessageHandler(handler, options);
            var subsClient104 = new SubscriptionClient(_backboneConfiguration.ConnectionString, "playerevents", "104");

            subsClient104.RegisterMessageHandler(handler, options);

            // send messages to each
            var topicclient = factory.GetTopicClientByName("playerevents").Result;
            var messages    = new List <Message>();

            for (var msg = 0; msg < 20; msg++)
            {
                for (var i = 100; i < 105; i++)
                {
                    var message = new Message();
                    message.CorrelationId = _correlation;
                    message.UserProperties.Add("PlayerId", $"{i}");
                    messages.Add(message);
                }
            }
            Task.WaitAll(topicclient.SendAsync(messages));

            var sw = new Stopwatch();

            sw.Start();
            while (sw.ElapsedMilliseconds < 100000 &&
                   (_player100 != 20 ||
                    _player101 != 20 ||
                    _player102 != 20 ||
                    _player103 != 20 ||
                    _player104 != 20))
            {
                Thread.Sleep(50);
            }
            sw.Stop();

            Assert.AreEqual(20, _player100);
            Assert.AreEqual(20, _player101);
            Assert.AreEqual(20, _player102);
            Assert.AreEqual(20, _player103);
            Assert.AreEqual(20, _player104);
        }
Example #4
0
 public TestGamePacketReceiver(IConfiguration configuration, ServiceBusMessagingFactory factory) : base(
         configuration, factory)
 {
 }