rabbitmq 如何使用BatchingRabbitTemplate提高发布速度

ej83mcc0  于 2022-11-29  发布在  RabbitMQ
关注(0)|答案(1)|浏览(691)

我的目标是向一个交易所发布50000条消息,我使用RabbitTemplate.convertAndSend循环发送每条消息。
由于这个过程花费了大量的时间,我开始寻找一种方法来减少它。我运行BatchingRabbitTemplate,以下面的方式创建和配置它:

BatchingStrategy strategy = new SimpleBatchingStrategy(1000, 1100, 3_000);
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.setPoolSize(30);
    scheduler.initialize();
    rabbitTemplate = new BatchingRabbitTemplate(strategy, scheduler);

并继续发送循环中的每条消息:

for (int i = 0; i < 50000; i++) {
         ...
        rabbitTemplate.convertAndSend("my-exchange", "*.my-key.*", message);
    }

但我没有注意到任何速度增加之后。当我使用

BatchingStrategy strategy = new SimpleBatchingStrategy(1000, Integer.MAX_VALUE, 30_000);

甚至比使用简单的RabbitTemplate还要糟糕。看来我没有正确配置它。如果有人能解释一下为什么它没有带来预期的发布速度提高和/或建议一个解决方案,那就太好了。

rnmwe5a2

rnmwe5a21#

看起来您的BatchingRabbitTemplate不是Bean。而且您没有为它提供ConnectionFactory
BatchingRabbitTemplate.send()中放置调试断点并在发送这些消息时查看发生了什么非常简单。

相关问题