NestJS框架中怎么配置和使用RabbitMQ微服务传输器?

轻晨同学_2048

轻晨同学_2048

2026-05-22

956人浏览

原创

nestjs中配置rabbitmq微服务需建立可靠连接并明确消息流向:服务端用createmicroservice()配置urls、queue、noack=false及durable=true;客户端通过clientsmodule或clientproxyfactory创建代理,使用emit或send发送消息;消费者用@payload()和@ctx()处理数据与手动确认。

nestjs框架中怎么配置和使用rabbitmq微服务传输器?

在 NestJS 中配置和使用 RabbitMQ 微服务传输器,核心是两件事:建立可靠连接 + 明确消息流向(谁发、谁收、用哪个队列)。不需要重写底层通信逻辑,Nest 提供了开箱即用的封装。

RabbitMQ 服务端配置(创建微服务)

createMicroservice() 启动一个监听 RabbitMQ 的微服务实例。关键配置项必须明确:

  • urls:AMQP 连接地址,格式如 'amqp://admin:admin@localhost:5672',含用户名密码更安全
  • queue:该服务要监听的队列名,比如 'notifications_queue'
  • noAck:设为 false 启用手动确认,避免消息丢失;设为 true 则自动确认(不推荐生产环境)
  • queueOptions.durable:设为 true 可让队列在 RabbitMQ 重启后依然存在

RabbitMQ 客户端配置(调用微服务)

客户端负责发送消息,可用 ClientsModule.register()ClientProxyFactory 创建代理实例:

Revealjs Presentations
Revealjs Presentations

创建、编辑并部署 reveal.js 演示文稿为单个 HTML 文件,可选自定义 CSS。适用于需要制作演示文稿、幻灯片或宣传材料时使用。

下载
  • 同样需要 urlsqueue,确保与服务端一致
  • 推荐用 name 字段定义注入 Token(如 'NOTIFICATION_CLIENT'),便于 DI 管理
  • 发送时用 .emit(queueName, payload) 发布事件,或用 .send(pattern, payload) 触发请求响应模式

消息处理与上下文访问

消费者方法通过装饰器接收数据和上下文:

  • @Payload() 获取原始消息体,支持类型推导(如 @Payload() data: { id: number }
  • @Ctx() context: RmqContext 可读取底层信道信息,例如 context.getChannelRef()context.getMessage()
  • 手动确认需调用 context.getChannelRef().ack(message)(配合 noAck: false

开发环境快速启动 RabbitMQ

本地调试建议用 Docker 一键拉起带管理界面的实例:

  • 运行命令:docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:management
  • 浏览器打开 https://www.php.cn/link/9e7a3b6fbfa4f7c2052f776f1b4eab35,用 admin/admin 登录查看队列状态
  • 注意:生产环境务必修改默认凭据,并启用 TLS 加密

相关专题

更多
rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

504

5

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

2026.01.28

628

20

RabbitMQ使用教程合集
RabbitMQ使用教程合集

RabbitMQ使用教程合集整理 RabbitMQ 基础教程、消息队列开发案例、生产者消费者、交换机与队列实战内容。

2026.05.20

144

15

RabbitMQ集群部署指南
RabbitMQ集群部署指南

RabbitMQ集群部署指南聚合 RabbitMQ 集群部署、高可用架构、镜像队列、故障恢复、监控与运维优化内容。

2026.05.20

97

12

RabbitMQ Docker实战指南
RabbitMQ Docker实战指南

RabbitMQ Docker实战指南提供 RabbitMQ Docker 镜像部署、Docker Compose、Kubernetes Operator 与云原生实践教程。

2026.05.20

122

10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

3676

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1175

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1498

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

9103

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.4万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.6万人学习