上述是消费者控制台代码,我下面那个循环时测试的10W条数据,不断的发送和另一个控制台不断的获取消息,测试下来还不错性能。。。这个例子发送的消息比较简单,直接转成二进制就可以了,但是如果我们
/// <summary>
/// 消息消费者读取消息队列
/// </summary>
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory();
factory.HostName = "127.0.0.1";
factory.UserName = "feiyang";
factory.Password = "123456";
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
//还是连接到哪个队列
channel.QueueDeclare("firstQueue",false,false,false,null);
//定义消息接受者
var customer = new QueueingBasicConsumer(channel);
//从指定队列获取消息
channel.BasicConsume("firstQueue",true,customer);
//开始不断循环出队列的消息
while (true)
{
var ea = (BasicDeliverEventArgs)customer.Queue.Dequeue();
//将消息二进制转回字符串
var msg = Encoding.UTF8.GetString(ea.Body);
Console.WriteLine(msg);
}
//sw.Stop();
//Console.WriteLine("共用时" + sw.ElapsedTicks + "毫秒");
//Console.ReadKey();
}
}
}
}