/
Consumer.cs
38 lines (31 loc) · 1.14 KB
/
Consumer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Text;
using System.Threading;
using Common;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace Tutorial3
{
[Serializable]
public class Consumer : IProcess
{
public void Start(WaitHandle waitHandle)
{
using (var connection = Helpers.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.ExchangeDeclare(Constants.ExchangeName, ExchangeType.Fanout, false, true, null);
var queue = channel.QueueDeclare("", false, true, true, null);
channel.QueueBind(queue, Constants.ExchangeName, "");
var consumer = new EventingBasicConsumer {Model = channel};
consumer.Received += ConsumerOnReceived;
channel.BasicConsume(queue, true, consumer);
waitHandle.WaitOne();
}
}
private void ConsumerOnReceived(IBasicConsumer sender, BasicDeliverEventArgs args)
{
Console.WriteLine("Message received: {0}", Encoding.UTF8.GetString(args.Body));
}
}
}