RabbitMQ消费消息后数据库查询返回异常数据问题排查
RabbitMQ消息消费时数据库查询异常问题记录
问题现象
创建通道通过channel.sendToQueue()方法向队列发送消息,另一个模块创建通道异步消费队列消息,消息收发流程正常,但在消费回调内执行数据库查询时返回异常数据。
发送端代码
const connect = await amqplib.connect("amqp://localhost") const channel = await connect.createChannel() channel.sendToQueue(newsfeedQueue, Buffer.from(JSON.stringify(user._id))) // user is the content i want to send
接收端代码
channel.consume(newsfeedQueue, async (msg) => { const data = JSON.parse(msg.content) console.log(" ocnsume data ", data) const storyList = await Story.find({}) console.log("story list ", storyList) channel.ack(msg) })
测试对比
启动队列消费前直接执行数据库查询可得到预期数据,但将查询逻辑放到消费回调内则返回异常数据:
const storyList = await Story.find({}) console.log("story list ", storyList) // Here got the expected data channel.consume(newsfeedQueue, async (msg) => { const data = JSON.parse(msg.content) console.log(" ocnsume data ", data) // if i query here didn't get expected data channel.ack(msg) })
问题解决
经排查,问题出在测试环节,上述代码本身逻辑无问题,可正常运行。
内容的提问来源于stack exchange,提问作者Raihanur Rahman
相关产品推荐
相关产品推荐

