Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RabbitMQ和Node.js将消息缓冲区转换为JSON_Node.js_Rabbitmq - Fatal编程技术网

RabbitMQ和Node.js将消息缓冲区转换为JSON

RabbitMQ和Node.js将消息缓冲区转换为JSON,node.js,rabbitmq,Node.js,Rabbitmq,我有一个node.js应用程序,它连接到RabbitMQ以接收消息。当消息传入并输出到控制台时,我得到: {数据:,内容类型:未定义} 如何从中获得正确的JSON或字符串?以下是我的例子: var amqp = require('amqp'); var connection = amqp.createConnection({ host: 'localhost' }); process.on('uncaughtException', function(err) { console.erro

我有一个node.js应用程序,它连接到RabbitMQ以接收消息。当消息传入并输出到控制台时,我得到: {数据:,内容类型:未定义}

如何从中获得正确的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());
我什么也得不到。甚至没有错误消息。(不确定如何抓住问题)

当我这样做的时候,我得到的[object]没有帮助

console.log(JSON.parse(message.toString('utf8')));

也不执行任何操作,并且我没有收到任何错误消息。我假设它失败了,但我不知道为什么我没有得到异常。

答案就在我面前。如果其他人也有同样的问题,请保留此选项,但解决方案是:

console.log(message.data.toString('utf8'));

我正在获取对象并尝试转换所有对象,而不是数据属性

如果您使用的是amqplib,那么下面的代码就解决了这个问题

sender.js文件中,我将数据转换为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});
将数据视为

var details={'name':'Stack','Age':18}

“字符串化”然后由消费者“解析”是个好主意。谢谢你的提示!您可能希望使用
Buffer.from()
而不是
newbuffer()
,因为它已被弃用。
var obj=JSON.parse( msg.content.toString())
console.log(obj.name);
var details={'name':'Stack','Age':18}