通过RabbitMQ发送数组

时间:2015-09-15 12:34:05

标签: node.js rabbitmq amqp node-amqp php-amqplib

如何使用RabbitMQ发送消息数组? 我不想单独发送每条消息。

例如:

ch.publish(ex, '', new Buffer('hello world'));

我怎么能用这样的东西:

ch.publish(ex, '', new Buffer([msg1, msg2, msg3...]));

谢谢!

3 个答案:

答案 0 :(得分:1)

  

如何使用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
});

答案 1 :(得分:0)

除了@ derick-bailey所说的,如果你需要在每条消息中发送多个变量,你总是可以用变量逗号分隔一个字符串。或者,如果您在文本中使用逗号,您可以找到一些其他符号。

答案 2 :(得分:0)

您可以像这样传递JSON:

var json = JSON.stringify(arr);
ch.publish(ex, '', new Buffer(json));

然后,消费者将解析JSON。