private CancellableQueueingConsumer InitializeConsumer(CancellationToken token, out RabbitChannel channel)
{
// Opening a new channel may lead to a new connection creation
channel = this.connection.OpenChannel(token);
channel.Shutdown += this.OnChannelShutdown;
this.channels.Add(channel);
if (this.ReceiverOptions.GetQoS().HasValue)
{
channel.SetQos(
this.ReceiverOptions.GetQoS().Value);
}
var consumer = channel.BuildCancellableConsumer(token);
var tag = channel.StartConsuming(
this.endpoint.ListeningSource,
this.ReceiverOptions.IsAcceptRequired(),
consumer);
this.logger.Trace(
$"A consumer tagged [{tag}] has been registered in listener of [{string.Join(",", this.AcceptedLabels)}]");
return(consumer);
}