任何人都知道是否可以使用Rabbit模板将一组消息发送到队列?
显然我可以一次发送一个,但我想在一次批量操作中进行(以获得性能)。
谢谢!
答案 0 :(得分:3)
您可以创建一个BatchingRabbitTemplate
的bean并使用它。这是一个有效的示例Bean:
@Bean
public BatchingRabbitTemplate batchingRabbitTemplate(ConnectionFactory connectionFactory) {
BatchingStrategy strategy = new SimpleBatchingStrategy(500, 25_000, 3_000);
TaskScheduler scheduler = new ConcurrentTaskScheduler();
BatchingRabbitTemplate template = new BatchingRabbitTemplate(strategy, scheduler);
template.setConnectionFactory(connectionFactory);
// ... other settings
return template;
}
现在您可以将BatchingRabbitTemplate
注入另一个bean中并使用它:
@Bean
public ApplicationRunner runner(BatchingRabbitTemplate template) {
MessageProperties props = //...
return args -> template.send(new Message("Test").getBytes(), props);
}
答案 1 :(得分:2)
有关批处理支持,请参阅Reference Manual:
从版本1.4.2开始,引入了BatchingRabbitTemplate。这是RabbitTemplate的子类,带有重写的send方法,根据BatchingStrategy批量处理消息;只有批处理完成后才会将消息发送到RabbitMQ。