public void SendOnlyBus_SendAsync_Nominal()
        {
            var id = Guid.NewGuid();

            var message = new TestMessage()
            {
                SomeData = id.ToString()
            };

            SendOnlyBus.SendAsync(message, SERVICENAME).Wait();

            var stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;

            var finalMessageEnvelope = JsonConvert.DeserializeObject <AFBusMessageEnvelope>(stringMessage, new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.Objects,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
            });

            var finalMessage = JsonConvert.DeserializeObject <TestMessage>(finalMessageEnvelope.Body, new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.Objects,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
            });

            Assert.IsTrue(id.ToString() == finalMessage.SomeData);
        }
        public void HandlersContainer_HandleAsync_Sends_To_Delay_If_Some_Delay_Is_Left_2()
        {
            InvocationCounter.Instance.Reset();

            var container = new HandlersContainer();

            HandlersContainer.AddDependencyWithInstance <ISendMessages>(new AzureStorageQueueSendTransportShortMaxDelay(HandlersContainer.SolveDependency <ISerializeMessages>()));


            var message = new TestMessage()
            {
                SomeData = "delayed"
            };

            var serializer = HandlersContainer.SolveDependency <ISerializeMessages>();


            SendOnlyBus.SendAsync(message, SERVICENAME, TimeSpan.FromSeconds(15), serializer, new AzureStorageQueueSendTransportShortMaxDelay(serializer)).Wait();

            string stringMessage = null;

            do
            {
                stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;
            }while (string.IsNullOrEmpty(stringMessage));

            container.HandleAsync(stringMessage, null).Wait();

            Assert.IsTrue(InvocationCounter.Instance.Counter == 0, "message not delayed");


            do
            {
                stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;
            }while (string.IsNullOrEmpty(stringMessage));

            container.HandleAsync(stringMessage, null).Wait();

            Assert.IsTrue(InvocationCounter.Instance.Counter == 0, "message not delayed 2");

            do
            {
                stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;
            }while (string.IsNullOrEmpty(stringMessage));

            container.HandleAsync(stringMessage, null).Wait();


            Assert.IsTrue(InvocationCounter.Instance.Counter == 2, "message delayed more than once");
        }
Example #3
0
        public async Task <IActionResult> ProcessOrder()
        {
            ClearCartInSession();
            var cartItems     = GetCartInSession();
            var cartViewModel = new CartViewModel();

            cartViewModel.CartItemsAdded = cartItems;

            await SendOnlyBus.SendAsync(new ProcessOrder()
            {
                UserName = USER
            }, ORDERSAGASERVICENAME);

            return(View("Index", cartViewModel));
        }
Example #4
0
        public async Task <IActionResult> AddToCard(CartViewModel cartViewModel)
        {
            var cartItemAdded = new CartItemAdded()
            {
                UserName = USER, ProductName = cartViewModel.Product
            };

            await SendOnlyBus.SendAsync(cartItemAdded, ORDERSAGASERVICENAME);

            AddItemsToCartInSession(cartItemAdded);

            var cartItems = GetCartInSession();

            cartViewModel.CartItemsAdded = cartItems;

            return(View("Index", cartViewModel));
        }
Example #5
0
        static async Task MainAsync()
        {
            var routes = new MessageRouteTable()
                         .AddRoute <MyQueueMessage>("my-message-queue")
                         .AddRoute <MyTopicMessage>("my-message-topic");

            while (true)
            {
                Console.WriteLine("Please enter option:");
                Console.WriteLine("Q: queue");
                Console.WriteLine("T: topic");
                Console.WriteLine("X: exit");
                Console.WriteLine();

                var option = Console.ReadKey();
                var bus    = new SendOnlyBus(new BusConfigutration(), routes);

                switch (option.Key)
                {
                case ConsoleKey.X:
                    return;

                case ConsoleKey.Q:
                    Console.WriteLine();
                    Console.WriteLine($"Please enter body as text.");
                    await bus.Send(new MyQueueMessage { SomeString = Console.ReadLine() });

                    continue;

                case ConsoleKey.T:
                    Console.WriteLine();
                    Console.WriteLine($"Please enter body as text.");
                    await bus.Publish(new MyTopicMessage { SomeString = Console.ReadLine() });

                    continue;

                default:
                    continue;
                }



                //await bus.Send(new MyQueueMessage { SomeString = "From my queue!" });
                //await bus.Publish(new MyTopicMessage { SomeString = "From my topic!" });
            }
        }
        public void SendOnlyBus_PublishAsync_EventHub_Nominal()
        {
            var id = Guid.NewGuid();

            bool testOk = false;

            var message = new TestMessage()
            {
                SomeData = id.ToString()
            };

            SendOnlyBus.PublishAsync(message, TOPICNAME).Wait();

            var eventProcessorHost = new EventProcessorHost(TOPICNAME, PartitionReceiver.DefaultConsumerGroupName, SettingsUtil.GetSettings <string>(SETTINGS.AZURE_EVENTHUB), SettingsUtil.GetSettings <string>(SETTINGS.AZURE_STORAGE), "eventhubcontainer");

            // Registers the Event Processor Host and starts receiving messages
            var readingTask = eventProcessorHost.RegisterEventProcessorFactoryAsync(new AzureStreamProcessorFactory(stringMessage =>

            {
                var finalMessageEnvelope = JsonConvert.DeserializeObject <AFBusMessageEnvelope>(stringMessage, new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.Objects,
                    TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
                });

                var finalMessage = JsonConvert.DeserializeObject <TestMessage>(finalMessageEnvelope.Body, new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.Objects,
                    TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
                });

                testOk = testOk || (id.ToString() == finalMessage.SomeData);
            }));



            Task.Delay(5000).Wait();


            // Disposes of the Event Processor Host
            eventProcessorHost.UnregisterEventProcessorAsync().Wait();

            Assert.IsTrue(testOk);
        }
        public void SendOnlyBus_SendAsync_DelayedMessage()
        {
            QueueReader.CleanQueueAsync(SERVICENAME).Wait();

            var message = new TestMessage()
            {
                SomeData = "delayed"
            };

            var  serializer = new JSONSerializer();
            var  publisher  = new Mock <IPublishEvents>();
            IBus bus        = new Bus(serializer, new AzureStorageQueueSendTransport(serializer), publisher.Object);

            var before      = DateTime.Now;
            var timeDelayed = new TimeSpan(0, 0, 3);

            SendOnlyBus.SendAsync(message, SERVICENAME, timeDelayed).Wait();

            string stringMessage = null;

            do
            {
                stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;
            }while (string.IsNullOrEmpty(stringMessage));

            var after = DateTime.Now;

            var finalMessageEnvelope = JsonConvert.DeserializeObject <AFBusMessageEnvelope>(stringMessage, new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.Objects,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
            });

            var finalMessage = JsonConvert.DeserializeObject <TestMessage>(finalMessageEnvelope.Body, new JsonSerializerSettings()
            {
                TypeNameHandling = TypeNameHandling.Objects,
                TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
            });

            Assert.IsTrue(after - before > timeDelayed, "Delay failed");
        }
Example #8
0
        public void BigMessage_Bug_Small_After_Big_Mixes_Message_In_File_Flag()
        {
            BlobReader.DeleteFilesAsync().Wait();
            QueueReader.CleanQueueAsync(SERVICENAME).Wait();

            InvocationCounter.Instance.Reset();

            var container = new HandlersContainer(SERVICENAME);

            var message = new BigMessage2();

            message.Data = new string('*', 66000);

            SendOnlyBus.SendAsync(message, SERVICENAME).Wait();

            var stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;

            container.HandleAsync(stringMessage, null).Wait();

            Assert.IsTrue(BlobReader.ListFilesAsync().Result.Count() == 0);
        }
Example #9
0
        public void BigMessage_Going_To_File_In_Send()
        {
            BlobReader.DeleteFilesAsync().Wait();
            QueueReader.CleanQueueAsync(SERVICENAME).Wait();

            InvocationCounter.Instance.Reset();

            var container = new HandlersContainer(SERVICENAME);

            var message = new BigMessage();

            message.Data = new string('*', 66000);

            SendOnlyBus.SendAsync(message, SERVICENAME).Wait();

            var stringMessage = QueueReader.ReadOneMessageFromQueueAsync(SERVICENAME).Result;

            container.HandleAsync(stringMessage, null).Wait();

            Assert.IsTrue(InvocationCounter.Instance.Counter == 1);
        }