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"); }
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)); }
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)); }
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"); }
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); }
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); }