master1 | java.util.concurrent.RejectedExecutionException: Task org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener$2@1e179a79 rejected from java.util.concurrent.ThreadPoolExecutor@bb1ccc7[Running, pool size = 5, active threads = 4, queued tasks = 2000, completed tasks = 30247] master1 | at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) master1 | at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) master1 | at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) master1 | at org.apache.rocketmq.broker.transaction.AbstractTransactionalMessageCheckListener.resolveHalfMsg(AbstractTransactionalMessageCheckListener.java:80) master1 | at org.apache.rocketmq.broker.transaction.queue.TransactionalMessageServiceImpl.check(TransactionalMessageServiceImpl.java:223) master1 | at org.apache.rocketmq.broker.transaction.TransactionalMessageCheckService.onWaitEnd(TransactionalMessageCheckService.java:55) master1 | at org.apache.rocketmq.common.ServiceThread.waitForRunning(ServiceThread.java:144) master1 | at org.apache.rocketmq.broker.transaction.TransactionalMessageCheckService.run(TransactionalMessageCheckService.java:44) master1 | at java.lang.Thread.run(Thread.java:748)
由于ExcuetorService(在AbstractTransactionalMessageCheckListener中创建)的队列已满:
private static ExecutorService executorService = new ThreadPoolExecutor(2, 5, 100, TimeUnit.SECONDS, new ArrayBlockingQueue(2000), new ThreadFactory() { @Override public Thread newThread(Runnable r) { Thread thread = new Thread(r); thread.setName("Transaction-msg-check-thread"); return thread; } });
当异常发生时,TransactionalMessageServiceImpl.check的newOffset没有更新为ConsumeQueue,因此会发生大量重复检查。
原提问者GitHub用户areyouok
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。