public void MustSequentialProcessing() { var processingMessageHandler = new MockupProcessingMessageHandler(); var messageHandlerProvider = new MockupMessageHandlerProvider(); IProcessingMessageMailbox mailbox = new DefaultProcessingMessageMailbox("B001", "", messageHandlerProvider, processingMessageHandler, false, 1, 5); var testCount = 20; for (var i = 0; i < testCount; i++) { mailbox.Enqueue(new ProcessingMessage(new MessageA { Id = $"M{i + 1}", Timestamp = DateTime.Now, BusinessKey = "B001" }, new MockupMessageExecutingContext())); } var processedMessages = processingMessageHandler.GetProcessedMessages(); while (processedMessages.Length < testCount) { Thread.Sleep(100); processedMessages = processingMessageHandler.GetProcessedMessages(); } for (var i = 0; i < testCount; i++) { Assert.Equal(i + 1, processedMessages[i].Sequence); } }
public void EnqueueNullIsNotAllowed() { var processingMessageHandler = new MockupProcessingMessageHandler(); var messageHandlerProvider = new MockupMessageHandlerProvider(); IProcessingMessageMailbox mailbox = new DefaultProcessingMessageMailbox("B001", "", messageHandlerProvider, processingMessageHandler, false, 1, 2); Assert.Throws <ArgumentNullException>(() => { mailbox.Enqueue(null); }); }
public void EnqueueDifferentBussinessKeyIsNotAllowed() { var processingMessageHandler = new MockupProcessingMessageHandler(); var messageHandlerProvider = new MockupMessageHandlerProvider(); IProcessingMessageMailbox mailbox = new DefaultProcessingMessageMailbox("B001", "", messageHandlerProvider, processingMessageHandler, false, 1, 2); Assert.Throws <InvalidOperationException>(() => { mailbox.Enqueue(new ProcessingMessage(new MessageA { Id = "1", Timestamp = DateTime.Now, BusinessKey = "B002" }, new MockupMessageExecutingContext())); }); }