# RabbitMQ
发送端
| using System.Text; |
| using RabbitMQ.Client; |
| |
| var factory = new ConnectionFactory(); |
| factory.HostName = "127.0.0.1"; |
| factory.DispatchConsumersAsync = true; |
| string exchangeName = "exchange1"; |
| string eventName = "myEvent"; |
| using var conn = factory.CreateConnection(); |
| |
| while (true) |
| { |
| string msg = DateTime.Now.TimeOfDay.ToString(); |
| using (var channel = conn.CreateModel()) |
| { |
| var properties = channel.CreateBasicProperties(); |
| properties.DeliveryMode = 2; |
| channel.ExchangeDeclare(exchange: exchangeName, type: "direct"); |
| byte[] body = Encoding.UTF8.GetBytes(msg); |
| channel.BasicPublish( |
| exchange: exchangeName, |
| routingKey: eventName, |
| mandatory: true, |
| basicProperties: properties, |
| body: body |
| ); |
| } |
| Console.WriteLine("发布了消息:" + msg); |
| Thread.Sleep(1000); |
| } |
消费端
| using System.Text; |
| using RabbitMQ.Client; |
| using RabbitMQ.Client.Events; |
| |
| var factory = new ConnectionFactory(); |
| factory.HostName = "127.0.0.1"; |
| factory.DispatchConsumersAsync = true; |
| string exchangeName = "exchange1"; |
| string eventName = "myEvent"; |
| using var conn = factory.CreateConnection(); |
| using var channel = conn.CreateModel(); |
| string queueName = "queue1"; |
| channel.ExchangeDeclare(exchange: exchangeName, type: "direct"); |
| channel.QueueDeclare( |
| queue: queueName, |
| durable: true, |
| exclusive: false, |
| autoDelete: false, |
| arguments: null |
| ); |
| channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: eventName); |
| var consumer = new AsyncEventingBasicConsumer(channel); |
| consumer.Received += Consumer_Received; |
| channel.BasicConsume(queue: queueName, autoAck: false, consumer: consumer); |
| Console.ReadLine(); |
| async Task Consumer_Received(object sender, BasicDeliverEventArgs args) |
| { |
| try |
| { |
| var bytes = args.Body.ToArray(); |
| string msg = Encoding.UTF8.GetString(bytes); |
| Console.WriteLine(DateTime.Now + "收到了消息" + msg); |
| channel.BasicAck(args.DeliveryTag, multiple: false); |
| await Task.Delay(800); |
| } |
| catch (Exception ex) |
| { |
| channel.BasicReject(args.DeliveryTag, true); |
| Console.WriteLine("处理收到的消息出错" + ex); |
| } |
| } |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-10-10 vsvim config 2023-10-10 23:30:10
2022-10-10 vim 快捷键总结 2022年10月10日19:57:23
2022-10-10 点8上的pycharm education的信息