package com.example.messagequeue.config;import com.github.benmanes.caffeine.cache.Caffeine;import com.zaxxer.hikari.HikariConfig;import com.zaxxer.hikari.HikariDataSource;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.cache.caffeine.CaffeineCacheManager;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;import java.util.concurrent.Executor;import java.util.concurrent.ThreadPoolExecutor;///*** 高性能配置类* 配置缓存、线程池和事务管理*/@Configuration@EnableCaching@EnableAsync@EnableTransactionManagementpublic class HighPerformanceConfig {/*** 配置Caffeine缓存管理器*/@Beanpublic CacheManager cacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();cacheManager.setCaffeine(Caffeine.newBuilder()// 初始容量.initialCapacity(100)// 最大容量.maximumSize(1000)// 写入后过期时间(5分钟).expireAfterWrite(java.time.Duration.ofMinutes(5))// 记录命中率等统计信息.recordStats());return cacheManager;}/*** 配置异步任务执行器*/@Bean(name = "messageTaskExecutor")public Executor messageTaskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 核心线程数executor.setCorePoolSize(Runtime.getRuntime().availableProcessors());// 最大线程数executor.setMaxPoolSize(Runtime.getRuntime().availableProcessors() * 2);// 队列容量executor.setQueueCapacity(500);// 线程名前缀executor.setThreadNamePrefix("MessageExecutor-");// 拒绝策略:调用者运行executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 线程空闲时间executor.setKeepAliveSeconds(60);// 允许核心线程超时executor.setAllowCoreThreadTimeOut(true);// 等待所有任务完成后再关闭线程池executor.setWaitForTasksToCompleteOnShutdown(true);// 等待时间executor.setAwaitTerminationSeconds(60);executor.initialize();return executor;}/*** 配置数据库连接池*/@Beanpublic HikariConfig hikariConfig() {HikariConfig config = new HikariConfig();// 连接池大小config.setMaximumPoolSize(Runtime.getRuntime().availableProcessors() * 2);// 最小空闲连接数config.setMinimumIdle(2);// 连接超时时间config.setConnectionTimeout(30000);// 空闲连接超时时间config.setIdleTimeout(600000);// 连接最大生命周期config.setMaxLifetime(1800000);// 连接测试查询config.setConnectionTestQuery("SELECT 1");// 数据库连接URLconfig.setJdbcUrl("jdbc:h2:mem:messagequeue;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");// 数据库用户名config.setUsername("sa");// 数据库密码config.setPassword("");// 驱动类名config.setDriverClassName("org.h2.Driver");// 连接池名称config.setPoolName("MessageQueuePool");return config;}@Beanpublic DataSource dataSource() {return new HikariDataSource(hikariConfig());}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。