private async Task CreateTempQueueAndConsume(IChannel channel)
        {
            // declare temp queue
            var queueName = await channel.QueueDeclare("", passive : false,
                                                       durable : false, exclusive : true, autoDelete : true, arguments : null,
                                                       waitConfirmation : true);

            _queues[queueName.Name] = true;
//
//			Console.WriteLine("Declared " + queueName);

            // Consume
            var consumerTag = await channel.BasicConsume(ConsumeMode.SingleThreaded, delivery =>
            {
                // Console.WriteLine("delivery " + delivery.deliveryTag + " " + queueName.Name);

                return(Task.CompletedTask);
            }, queueName.Name, null, true, false, null, true);

            // give it some time
            await Task.Delay(10000);

            // Cancel consume
            _queues[queueName.Name] = false;
            bool val;

            _queues.TryRemove(queueName.Name, out val);

            await channel.BasicCancel(consumerTag, true);

//
//			Console.WriteLine("Canceled for " + queueName);
        }
Пример #2
0
        protected async Task Setup()
        {
            _replyQueueName = await _channel.QueueDeclare("",             // temp
                                                          false, false, exclusive : true, autoDelete : true,
                                                          waitConfirmation : true, arguments : null).ConfigureAwait(this.CaptureContext);

            /*_subscription =*/ await _channel.BasicConsume(_mode, OnReplyReceived, _replyQueueName.Name,
                                                            consumerTag : "",
                                                            withoutAcks : true, exclusive : true, arguments : null, waitConfirmation : true).ConfigureAwait(this.CaptureContext);

            _operational = true;
        }