2024-06-20
后端技术
00
请注意,本文编写于 91 天前,最后修改于 91 天前,其中某些信息可能已经过时。

环境: Visual Studio 2022 NET5 RabbitMQ.Client 6.2.2

1、新建两个控制台系统

csharp
dotnet 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 消费消息

csharp
public 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

image.png

本文作者:一叶知秋

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!