【问题标题】:Send array via RabbitMQ通过 RabbitMQ 发送数组
【发布时间】:2015-09-15 12:34:04
【问题描述】:
如何使用 RabbitMQ 发送消息数组?
我不想单独发送每条消息。
例如:
ch.publish(ex, '', new Buffer('hello world'));
我怎么能使用类似的东西:
ch.publish(ex, '', new Buffer([msg1, msg2, msg3...]));
谢谢!
【问题讨论】:
标签:
node.js
rabbitmq
amqp
node-amqp
php-amqplib
【解决方案1】:
您可以像这样传递 JSON:
var json = JSON.stringify(arr);
ch.publish(ex, '', new Buffer(json));
然后消费者将解析 JSON。
【解决方案2】:
如何使用 RabbitMQ 发送消息数组?我不想单独发送每条消息。
你不能。每条消息必须单独发送。
如果您尝试做您想做的事,您最终会得到一条“消息”,其中包含您要发送的所有单个消息。
如果您想创建一个看起来可以执行此操作的 API,只需创建一个函数,该函数接收一组消息,循环通过它们并一次发送一条消息。
(nodejs/amqplib)
function publishAll(ex, ...messages){
return messages.map((msg) => {
ch.publish(ex, '', msg);
});
}
var pub = publishAll("my.exchange", [msg1, msg2, msg3]);
pub.then(() => {
// run code after they are all published
});
【解决方案3】:
除了@derick-bailey 所说的之外,如果您需要在每条消息中发送多个变量,您总是可以使用逗号分隔变量创建一个字符串。或者,如果您将在文本中使用逗号,您可以找到其他可以使用的符号。