我有一个连接到RabbitMQ以接收消息的node.js应用程序。当消息进来并将其输出到控制台时,我得到: {data:< Buffer 62 6c 61 68>,contentType:undefined}
如何从中获取正确的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());
当我这样做时,我得到[对象],它没有帮助
console.log(JSON.parse(message.toString('utf8')));
也什么也没做,我没有收到任何错误信息。我认为它失败了,但为什么我没有得到例外,我不知道。
答案 0 :(得分:9)
答案就在我面前。如果其他人有同样的问题,请保留此信息,但解决方案是:
console.log(message.data.toString('utf8'));
我正在获取对象并尝试将其全部转换而不是数据属性。
答案 1 :(得分:9)
如果您使用 amqplib ,则以下代码可解决此问题。
在 sender.js 文件中,我将数据转换为JSON字符串
var data = [{
name: '********',
company: 'JP Morgan',
designation: 'Senior Application Engineer'
}];
ch.sendToQueue(q, new Buffer(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});
答案 2 :(得分:2)
var obj=JSON.parse( msg.content.toString())
console.log(obj.name);
将数据视为
var details={'name':'Stack','Age':18}