.Net6快速搭建RabbitMQ发布订阅模式

qibaidao / 2023-08-25 / 原文

 

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