NodeJS 如何将 MySQL 查询返回的 rows 数据发送到 RabbitMQ 队列
解决方案
MySQL Node.js 驱动返回的rows本身就是可直接JSON序列化的普通JavaScript数组,不需要特殊格式转换,直接复用你现有发送模拟数据的逻辑即可,根据你的需求有两种常用处理方式:
- 单条数据发送(你用唯一Id查询,结果只会返回1条):先提取数组首元素再序列化
dbConnection.query("SELECT * FROM customer WHERE Id = ?", customerId, (err, rows, fields) => { if (err) { // 自行处理错误逻辑 return res.status(500).json({error: err.message}) } // 提取单条客户数据 const customerEntity = rows[0] // 直接序列化转Buffer发送到RabbitMQ channel.sendToQueue("message-queue", Buffer.from(JSON.stringify(customerEntity))) // 原有返回逻辑保留 res.status(200).json(rows) }) - 全量查询结果发送(比如多条查询、需要保留数组结构):直接序列化
rows即可channel.sendToQueue("message-queue", Buffer.from(JSON.stringify(rows)))
注意:如果查询结果为空,
rows会是空数组,序列化后也能正常发送到队列,不会报错,你可以根据业务需要提前做非空判断。
内容的提问来源于stack exchange,提问作者BaRRuKa
相关产品推荐
相关产品推荐

