.Net6快速搭建RabbitMQ发布订阅模式
(使用Asp.Net Core + 控制台应用)分为三步
1、 创建RabbitMQ链接
2、 搭建生产者
3、 搭建消费者
创建RabbitMQ链接#
可以先创建帮助类,专门用于RabbitMQ连接(需要安装Nuget包 RabbitMQ.Client)
生产者的搭建#
创建一个.Net6项目
在控制器里创建一个生产者控制器
代码:
以下是代码里的主要部分
先引用帮助类、来连接RabbitMQ
连接到RabbitMQ控制台之后,先创建信道
创建交换机的名称
创建交换机的类型--广播(会将消息广播给所有与之绑定的队列。无论有多少个消费者队列,每个队列都会收到完全相同的消息副本。这种模式常用于需要将消息广播给多个订阅者的场景,比如日志记录、通知系统等。
Fanout交换机忽略消息的路由键(routing key),因此消息会被发送到所有与之绑定的队列,而不是根据路由键进行筛选和路由。这使得所有的订阅者都能接收到广播的消息,无论其感兴趣的内容是什么。)如果想要精确传递要用到topic类型交换机
创建队列并绑定交换机,因为是Fanout所以不需要key值
RabbitMQ服务器发生故障或重新启动,持久化的消息也会被保存,以确保不会丢失。
向交换机写消息--可以是异常信息
生产者完毕
消费者的构建#
创建控制台应用
该部分代码使用Lambda表达式定义了一个事件处理程序,当消费者接收到消息时,该事件处理程序将执行以下操作:
1. 将从ea.Body中获取的消息内容转换为字符串形式,并存储在message变量中。
2. 使用Console.WriteLine方法打印消费者编号、队列名称、消费消息的长度以及消费消息的内容。
3. 调用channel.BasicAck方法,向RabbitMQ发送ACK确认消息,通知RabbitMQ该条消息已成功处理。
4. 程序休眠10毫秒,模拟处理消耗一定时间。
5. 增加计数器i的值。
这段代码主要实现了消费者接收到消息后的处理逻辑,包括打印消息内容、发送ACK确认消息,并进行线程休眠。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了