我之前用ssm消费kafka,在注解配置了消费队列,这是一种来生产多少,消费多少的形式,为了提升性能,加了一些优化:消费分为两部分:接收生产消费不变,执行消费行为用线程跑,但又不能无限制的开启线程,所以,最好用线程池管理
先看不需要返回结果的(runnable),应用:把消费代码封装,实现runnable接口,用线程池跑即可
public class ThreadPoolManager {
private static ThreadPoolManager sThreadPoolManager = new ThreadPoolManager();
// 线程池维护线程的最少数量
private static final int SIZE_CORE_POOL = 30;
// 线程池维护线程的最大数量
private static final int SIZE_MAX_POOL = 100;
// 线程池维护线程所允许的空闲时间
private static final int TIME_KEEP_ALIVE = 5000;
/*
* 单例
*/
public static ThreadPoolManager singleInstance() {
return sThreadPoolManager;
}
private final ThreadPoolExecutor mThreadPool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL,
TIME_KEEP_ALIVE, TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>());
private ThreadPoolManager() {
}
public void perpare() {
if (mThreadPool.isShutdown() && !mThreadPool.prestartCoreThread()) {
@SuppressWarnings("unused")
int startThread = mThreadPool.pres

本文探讨了如何优化Kafka消费性能,通过将接收与执行消费行为分离,利用线程池管理消费任务。对于不需要返回结果的场景,可以使用Runnable接口封装消费代码并由线程池执行。对于需要返回结果的情况,推荐使用Callable接口,同样借助线程池运行。
最低0.47元/天 解锁文章
800

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



