public async Task CreatePriorityPublishAndConsume() { var connectionFactory = CreateConnectionFactory(); using (var queueClient = new RabbitMQClient(connectionFactory)) { var queueName = $"IntegratedTestQueue_{Guid.NewGuid()}"; await queueClient.EnsureQueueExistsAsync(queueName, autoDelete : true, arguments : new Dictionary <string, object> { { "x-max-priority", 1 } }); await queueClient.PublishAsync("", queueName, "TestValue123", 0); await queueClient.PublishAsync("", queueName, "TestValue456", 1); await queueClient.PublishAsync("", queueName, "TestValue789", 1); await queueClient.PublishAsync("", queueName, "TestValue321", 0); var receivedMessages = new List <string>(); var worker = await SimpleProcessingWorker <string> .CreateAndStartAsync(queueClient, queueName, message => { DoSomething(message, out var receivedMessage); receivedMessages.Add(receivedMessage); }, CancellationToken.None); const int timeLimit = 10000; var elapsedTime = 0; while (receivedMessages.Count < 4 && elapsedTime < timeLimit) { await Task.Delay(100); elapsedTime += 100; } worker.Stop(); receivedMessages.Count.ShouldBe(4); receivedMessages[0].ShouldBe("TestValue456"); receivedMessages[1].ShouldBe("TestValue789"); receivedMessages[2].ShouldBe("TestValue123"); receivedMessages[3].ShouldBe("TestValue321"); } }
public async Task AdvancedCreatePublishAndConsume() { var connectionFactory = CreateConnectionFactory(); using (var queueClient = new RabbitMQClient(connectionFactory)) { var queueName = $"IntegratedTestQueue_{Guid.NewGuid()}"; await queueClient.EnsureQueueExistsAsync(queueName, autoDelete : true); await queueClient.PublishAsync("", queueName, "TestValue123"); var receivedMessage = ""; var worker = await AdvancedProcessingWorker <string> .CreateAndStartAsync(queueClient, queueName, message => DoSomething(message, out receivedMessage), CancellationToken.None); const int timeLimit = 10000; var elapsedTime = 0; while (receivedMessage == "" && elapsedTime < timeLimit) { await Task.Delay(100); elapsedTime += 100; } worker.Stop(); receivedMessage.ShouldBe("TestValue123"); } }