假设一个需求用户点击某个页面,我们后台需要向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的处理策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//线程空闲后最大的存活时间
execu

本文介绍了如何使用Java多线程结合Executor并发框架向RabbitMQ推送消息。通过创建ThreadPoolTaskExecutor配置线程池,实现消息的并发推送。在Controller层调用服务,利用Postman进行压力测试,验证多线程推送的效率。
最低0.47元/天 解锁文章
5460

被折叠的 条评论
为什么被折叠?



