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

标签 node.js rabbitmq

我有一个连接到 RabbitMQ 以接收消息的 node.js 应用程序。当消息进入并且我将它们输出到控制台时,我得到: { 数据:,contentType:未定义}

如何从中获取正确的 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/

相关文章:

node.js - 在 osx 上设置没有 sudo 的 npm global

node.js - Selenium 等待并点击使用nodejs

node.js - 在 Express 服务器中使用 Google Speech API

ruby-on-rails - 我们如何使用 Bunny gem 和 RabbitMQ 设置延迟排队?

docker - 如何根据rabbitmq队列消息速率扩展k8s pods?

spring - 如何使用 Spring Rabbitmq 连接到多个 Rabbitmq 节点?

django - 使用 Django 在 Docker 上设置 RabbitMQ

node.js - 如何测试通过模拟从 express 调用的路由处理程序

node.js - 使用 npm install 时出错 (npm ERR! Windows_NT 6.3.9600 )

python - Django Celery队列卡住了