最近在网上学习了RabbitMQ,做一下简单的记录,主要实现功能:1、生产者(将待处理任务放入RabbitMQ)2、消费者(将MQ中的数据进行消费)
该案例基于.NET5的控制台应用程序,开发工具VS2019。
在使用RabbitMQ前需要先从Nuget包添加RabbitMQ引用!!!!
然后导入引用:
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
生产者代码:
static void Main(string[] args)
{
#region 生产者-发送消息到MQ
try
{
string queue = "normal";
var connection = new RabbitMQ.Client.ConnectionFactory();
connection.UserName = "admin";
connection.Password = "admin";
var conn = connection.CreateConnection(new List<string>() { "192.168.105.1" }, queue);
var channel = conn.CreateModel();
channel.QueueDeclare(queue, true, false, false, null);
int i = 0;
while (i < 100)
{
string message = $"RabbitMQ消息-{i}";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "", routingKey: queue, null, body);
Thread.Sleep(100);
Console.WriteLine($"已向RabbitMQ发送{i}条消息");
i++;
}
Console.ReadLine();
}
catch (Exception ex)
{
throw;
}
#endregion
}
消费者代码:
static void Main(string[] args)
{
#region 消费者
string queue = "normal";
var connFactory = new ConnectionFactory()
{
UserName = "admin",
Password = "admin",
Port = 5672,
HostName = "192.168.105.1",
VirtualHost = "/"
};
var conn = connFactory.CreateConnection();
var channel = conn.CreateModel();
channel.QueueDeclare(queue, true, false, false, null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, es) =>
{
var message = es.Body.ToArray();
var body = Encoding.UTF8.GetString(message);
Console.WriteLine(body);
};
channel.BasicConsume(queue, true, consumer);
#endregion
Console.ReadLine();
}
以上步骤省略了安装RabbitMQ的过程,我是基于Linux+docker+rabbitmq进行操作的。如有疑问请私信。