环境: Visual Studio 2022 NET5 RabbitMQ.Client 6.2.2
1、新建两个控制台系统
csharpdotnet new sln
dotnet new console -n RabbitMQ.MessageProducer -f net5.0
donnet new console -n RabbitMQ.MessageConsumer01 -f net5.0
dotnet sln add .\RabbitMQ.MessageProducer
dotnet sln add .\RabbitMQ.MessageProducer
安装
**RabbitMQ**
csharp<PackageReference Include="RabbitMQ.Client" Version="6.2.2" />
**RabbitMQ.MessageProducer**
MessageProducer
生产消息
csharp# 新建类 ProductionConsumer
public static void Show()
{
var factory = new ConnectionFactory()
{
HostName = "localhost",
UserName = "guest",
Password = "guest"
};
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
// 队列名称OnlyProducerMessage
channel.QueueDeclare(queue: "OnlyProducerMessage", durable: true, exclusive: false, autoDelete: false, arguments: null);
// 交换机名称 Exchange
channel.ExchangeDeclare(exchange: "OnlyProducerMessageExChange", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
// 将队列绑定到交换机
channel.QueueBind(queue: "OnlyProducerMessage", exchange: "OnlyProducerMessageExChange", routingKey: string.Empty, arguments: null);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("生产者ProducerDemo已准备就绪");
int i = 1;
{
while (true)
{
string message = $"消息{i}";
byte[] body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "OnlyProducerMessageExChange", routingKey: string.Empty, basicProperties: null, body: body);
Console.WriteLine($"消息:{message}已发送");
i++;
Thread.Sleep(200);
}
}
}
**RabbitMQ.MessageConsumer01**
ProductionConsumer
消费消息
csharppublic static void Show()
{
var factory = new ConnectionFactory()
{
HostName = "localhost",
UserName = "guest",
Password = "guest"
};
using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();
Console.ForegroundColor = ConsoleColor.Green;
try
{
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var message = Encoding.UTF8.GetString(ea.Body.ToArray());
Console.WriteLine($"消费者01 接受消息:{message}");
};
channel.BasicConsume(queue: "OnlyProducerMessage", autoAck: true, consumer: consumer);
Console.WriteLine("Press [enter] to exit");
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
分别在
Program
中调用编译运行 访问http://127.0.0.1:15672
初始账号密码guest
guest
本文作者:一叶知秋
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!