Spring - Rabbit模板 - 批量操作

时间:2018-06-04 01:58:51

标签: rabbitmq spring-rabbit spring-rabbitmq

任何人都知道是否可以使用Rabbit模板将一组消息发送到队列?

显然我可以一次发送一个,但我想在一次批量操作中进行(以获得性能)。

谢谢!

2 个答案:

答案 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。