批量发送rabbitmq中的消息

时间:2017-03-30 09:55:17

标签: rabbitmq amqp

我搜索谷歌回答我的问题,但我没有找到一个明确的答案。是否可以在rabbitmq中批量发送消息?

2 个答案:

答案 0 :(得分:0)

之前已经讨论过,RabbitMQ现在不支持批量发布。你必须自己将它们捆绑在一条消息中。

请参阅:http://rabbitmq.1065348.n5.nabble.com/Batching-messages-td22852.html

答案 1 :(得分:0)

AFAIK 并根据官方文档(与您的问题主题最密切相关,并带有 Java https://www.rabbitmq.com/tutorials/tutorial-seven-java.html 示例),有一种叫做“批处理发布者确认”的东西。

我的意思是你基本上不能一次发布多条消息(我也深入研究了Java的API,甚至在最新版本中,例如5.12.0,完全没有这样的API提供在同一时间发布多条消息一批)。即使在文档中作为发布多条消息的例子,他们基本上也使用这样的东西:

int batchSize = 100;
int outstandingMessageCount = 0;
while (thereAreMessagesToPublish()) {
    byte[] body = ...;
    BasicProperties properties = ...;
    channel.basicPublish(exchange, queue, properties, body);
    outstandingMessageCount++;
    if (outstandingMessageCount == batchSize) {
        ch.waitForConfirmsOrDie(5_000);
        outstandingMessageCount = 0;
    }
}
if (outstandingMessageCount > 0) {
    ch.waitForConfirmsOrDie(5_000);
}

而且我敢打赌这绝对不是您想要的,因为在这里他们基本上分别发布 100 条消息,但将它们确认为一批。这就是我所说的“批量发布者确认”的意思——简单地确认多条消息已成功到达代理,但消息本身是单独发布的,一一发布。

我真的希望这个答案对某人有所帮助。非常感谢您的任何补充。