开发者社区 > 云原生 > 正文

AbstractTransactionalMessageCheckListener.excuetor

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

展开
收起
芬奇福贵 2023-05-26 15:49:24 120 0
1 条回答
写回答
取消 提交回答
  • 为了避免丢失检查请求,拒绝时不会更新新的偏移量。

    原回答者GitHub用户duhenglucky

    2023-05-26 17:52:33
    赞同 展开评论 打赏
问答分类:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载