【问题标题】: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 所说的之外,如果您需要在每条消息中发送多个变量,您总是可以使用逗号分隔变量创建一个字符串。或者,如果您将在文本中使用逗号,您可以找到其他可以使用的符号。

        【讨论】:

          猜你喜欢
          • 2015-01-26
          • 1970-01-01
          • 1970-01-01
          • 2022-06-11
          • 1970-01-01
          • 1970-01-01
          • 2014-03-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多