RabbitMQ配置
在使用RabbitMQ时,消费者默认是单线程消费的,效率很低。
可以在配置文件中添加配置达到多线程消费的效果,可以指定每个线程每次拉取的消息数量
spring:
rabbitmq:
listener:
simple:
# 手动ack配置
acknowledge-mode: manual
# corePoolSize核心线程数,表示一个消费者同时有多少个线程在消费
concurrency: 10
# 每次拉取的消息个数
prefetch: 5
上述配置方式会对所有消费者生效,如果要针对某个消费者单独指定,可以通过配置类的方式指定
package com.mashibing.smmgateway.config;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
@Bean
public SimpleRabbitListenerContainerFactory gatewayContainerFactory(ConnectionFactory connectionFactory,
SimpleRabbitListenerContainerFactoryConfigurer configurer) {
SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory = new SimpleRabbitListenerContainerFactory();
simpleRabbitListenerContainerFactory.setConcurrentConsumers(5);
simpleRabbitListenerContainerFactory.setPrefetchCount(10);
simpleRabbitListenerContainerFactory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
configurer.configure(simpleRabbitListenerContainerFactory, connectionFactory);
return simpleRabbitListenerContainerFactory;
}
}

浙公网安备 33010602011771号