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