2

How can I send an array of messages using RabbitMQ? I do not want to send every message separately.

For example:

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

How could I use something like:

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

Thank you!

4

3 回答 3

2

您可以像这样传递 JSON:

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

然后消费者将解析 JSON。

于 2019-01-21T04:24:09.563 回答
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
});
于 2015-09-15T13:23:44.100 回答
0

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

于 2018-06-12T21:39:39.213 回答