예제 #1
0
        public async Task CanCreateQueue_WithMaxLengthAndOverflowModeRejectPublish()
        {
            var options = new CreateQueueOptionsBuilder(QueueType.Classic)
                          .WithMaxLength(1)
                          .WithOverflowBehaviour(OverflowBehaviour.RejectPublish)
                          .Build();

            await _serviceClient.CreateQueueAsync(_queueName, options);

            await _serviceClient.EnqueueMessageAsync(_queueName, "some-message-1");

            await Task.Delay(TimeSpan.FromMilliseconds(100));

            (await _serviceClient.GetMessageCountInQueueAsync(_queueName)).Should().Be(1);
            await _serviceClient.EnqueueMessageAsync(_queueName, "some-message-2");

            await Task.Delay(TimeSpan.FromMilliseconds(100));

            (await _serviceClient.GetMessageCountInQueueAsync(_queueName)).Should().Be(1);
            using var channelContainer = await _rabbitMqConnectionManager.AcquireChannel(ChannelType.Consumer);

            var message = Encoding.UTF8.GetString(channelContainer.Channel.BasicGet(_queueName, true).Body.Span);

            message.Should().Be("\"some-message-1\"");
        }
        public async Task TearDown()
        {
            if (_queueName != null)
            {
                try
                {
                    using var channelContainer = await _rabbitMqConnectionManager.AcquireChannel(ChannelType.Publish);

                    channelContainer.Channel.QueueDelete(_queueName, false, false);
                }
                catch (Exception)
                {
                    // Ignored
                }
            }

            _rabbitMqConnectionManager.Dispose();
        }