1)为什么?我需要传递缓冲区到rabbitMQ,发布方法http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish
2)我的数据如下所示
QPushButton:focus {
border: none;
outline: none;
}
如何正确地将这样的对象数组转换为缓冲区,因此从另一方面可以解析回来。
答案 0 :(得分:3)
1)为什么?
来自https://www.rabbitmq.com/tutorials/amqp-concepts.html#messages
AMQP消息还有一个有效载荷(它们携带的数据),AMQP代理将其视为不透明的字节数组。经纪人不会检查或修改有效载荷。消息可能只包含属性而没有有效负载。通常使用序列化格式(如JSON,Thrift,Protocol Buffers和MessagePack)来序列化结构化数据,以便将其作为消息有效负载发布。 AMQP对等体通常使用“内容类型”和“内容编码”字段来传达此信息,但这仅限于惯例。
TL; DR版本是RabbitMQ对您的数据或其格式化/编码方式一无所知。它将您的消息视为一个字节数组,要求您处理编码。
amqp.node
库希望你传递缓冲区,因为这是Node.js处理字节数组转换的最简单方法,如RabbitMQ所期望的。
如何正确地将这样的对象数组转换为缓冲区,因此从另一方面可以解析回来。
在您的消息生成器中,您需要将消息数据转换为JSON字符串(文档),然后再转换为create a buffer。
var data = [ ... ];
var json = JSON.stringify(data);
var buffer = Buffer.from(json);
在消息使用者方面,您首先会使用消息body
和turn the buffer into a string执行相反的操作。
var json = message.body.toString();
var data = JSON.parse(json);
此时,您的data
对象应该是您想要的Node.js代码所需的数据数组。