.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确认消息,并进行线程休眠。