RabbitMQ和Node.js将消息缓冲区转换为JSON
我有一个node.js应用程序,它连接到RabbitMQ以接收消息。当消息传入并输出到控制台时,我得到: {数据:,内容类型:未定义} 如何从中获得正确的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
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}