假设一个需求用户点击某个页面,我们后台需要向MQ推送信信息
1,模拟的MQ服务,我这边使用RabbitMQ (关于MQ 发送和监听消息可以参考我的博客:SpringBoot消息中间件RabbitMQ)
//后台监听消息
@RabbitListener(queues = "brian.test")
public void receiveMessage(User user){
logger.info("接收到MQ的消息体: " + user);
}
2.向IOC容器中注册一个ThreadPoolTaskExecutor实例
@Bean
public ThreadPoolTaskExecutor brianThreadPool(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//核心线程数
executor.setCorePoolSize(8);
//最大线程数
executor.setMaxPoolSize(16);
//队列中最大的数
executor.setQueueCapacity(8);
//县城名称前缀
executor.setThreadNamePrefix("brianThreadPool_");
//rejectionPolicy:当pool已经达到max的时候,如何处理新任务
//callerRuns:不在新线程中执行任务,而是由调用者所在的线程来执行
//对拒绝task的处理策略