【发布时间】:2022-11-29 00:03:28
【问题描述】:
我的目标是向交易所发布 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 还要糟糕。看来我没有配置好。如果有人解释为什么它没有导致预期的发布速度提高和/或提出解决方案,那就太好了?
【问题讨论】:
标签: java rabbitmq spring-rabbit