while (!token.IsCancellationRequested)
using(var channel = connection.CreateModel()) {
... var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
... channel.BasicConsume(
...}_tokenSource = new CancellationTokenSource();
_tokenSource.Cancel();
public void StartConsumer(string queue, CancellationToken token)
{
using (channel = new channel())
{
consumer = new Consumer()
consumer.Received += receiveMethod;
channel.BasicConsume() // blocking
}
}
public void StartConsumer(string queue, CancellationToken token)
{
channel = new channel()
consumer = new Consumer()
consumer.Received += receiveMethod;
// launch new thread
task.StartNew() ==> channel.BasicConsume() // blocks in the new thread (?)
// main thread busy-wait
while (!token.IsCancelletionRequested)
{
Thread.Delay(1000); // or Thread.Sleep()
channel.BasicCancel(consumer.Tag)
channel.Dispose(); // close, etc.
}
}