我有一个连接到 RabbitMQ 以接收消息的 node.js 应用程序。当消息进入并且我将它们输出到控制台时,我得到:
{ 数据:
如何从中获取正确的 JSON 或字符串?这是我的例子:
var amqp = require('amqp');
var connection = amqp.createConnection({ host: 'localhost' });
process.on('uncaughtException', function(err) {
console.error(err.stack);
});
connection.on('ready', function () {
// Use the default 'amq.topic' exchange
connection.queue('my-queue', function(q){
q.bind('#');
q.subscribe(function (message) {
console.log(message);
});
});
});
正在使用 RabbitMQ 管理控制台发送消息(目前用于测试目的)。在这个例子中,我发送了一条简单的消息,主题为“test”,正文为“blah”。
我是 Node.js 的新手,但我已经尝试过
console.log(message.toJSON());
我一无所获。甚至没有错误消息。 (不确定如何捕获问题)
console.log(message.toString());
当我这样做时,我得到了 [object Object],但没有帮助
console.log(JSON.parse(message.toString('utf8')));
也什么都不做,我也没有收到任何错误消息。我假设它失败了,但我不知道为什么我没有得到异常。
最佳答案
如果您使用的是 amqplib,则以下代码可以解决问题。
在 sender.js 文件中,我将 data 转换为 JSON 字符串
var data = [{
name: '********',
company: 'JP Morgan',
designation: 'Senior Application Engineer'
}];
ch.sendToQueue(q, Buffer.from(JSON.stringify(data)));
在 receiver.js 中,我使用以下代码打印队列中的内容。在这里,我将 msg.content 解析为 JSON 格式。
ch.consume(q, function(msg) {
console.log(" [x] Received");
console.log(JSON.parse(msg.content));
}, {noAck: true});
关于node.js - RabbitMQ 和 Node.js 将消息缓冲区转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22464858/