RabbitMQ 生产者与消费者Code
消费者:
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 39 40 41 42 43 | // See https://aka.ms/new-console-template for more information using RabbitMQ.Client; using System.Text; Console.WriteLine( "Hello, World!" ); string dir = AppDomain.CurrentDomain.BaseDirectory; string ? consumerName = Path.GetFileName(Path.GetDirectoryName(dir)); ConnectionFactory factory= new ConnectionFactory(); //创建链接工厂 factory.HostName = "192.168.8.21" ; factory.UserName = "yangpeng" ; factory.Password = "yangpeng" ; factory.Port = 5677; //默认端口号是:5672 factory.AutomaticRecoveryEnabled = true ; using (IConnection connection = factory.CreateConnection()) { using (IModel channel = connection.CreateModel()) { //创建队列 channel.QueueDeclare(queue: "OnlyProducerMessageYangpeng" , durable: true , exclusive: false , autoDelete: false , arguments: null ); //创建交换机 channel.ExchangeDeclare(exchange: "OnlyProducerMessageExChangeYangpeng" , type: ExchangeType.Direct, durable: true , autoDelete: false , arguments: null ); //将队列和交换机绑定 channel.QueueBind(queue: "OnlyProducerMessageYangpeng" , exchange: "OnlyProducerMessageExChangeYangpeng" , routingKey: String.Empty, arguments: null ); Console.ForegroundColor=ConsoleColor.Red; Console.WriteLine($ "生产者{consumerName}已经准备就绪" ); int i = 1; while (i <= 1000) { string message = $ "{consumerName}生成者发送第{i}条消息;" ; byte [] body=Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "OnlyProducerMessageExChangeYangpeng" , routingKey: string .Empty, basicProperties: null , body: body); Console.WriteLine($ "消息已发送{i}条" ); i++; Thread.Sleep(500); } } } |
生产者:
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 39 40 41 | // See https://aka.ms/new-console-template for more information using RabbitMQ.Client; using RabbitMQ.Client.Events; using System.Text; Console.WriteLine( "Hello, World!" ); string dir = AppDomain.CurrentDomain.BaseDirectory; string ? consumerName = Path.GetFileName(Path.GetDirectoryName(dir)); ConnectionFactory factory = new ConnectionFactory(); //创建链接工厂 factory.HostName = "192.168.8.21" ; factory.UserName = "yangpeng" ; factory.Password = "yangpeng" ; factory.Port = 5677; //默认端口号是:5672 using (IConnection connection = factory.CreateConnection()) //基于链接工厂创建练级 { using ( var channel = connection.CreateModel()) //基于链接创建信道 { Console.ForegroundColor = ConsoleColor.Green; try { var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body.ToArray()); Console.WriteLine($ "{consumerName}成功接受到消息,消息内容为:{message}" ); }; channel.BasicConsume(queue: "OnlyProducerMessageYangpeng" , autoAck: true , consumer: consumer); Console.WriteLine( "Press[enter] to exit." ); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类