From 703cc2697e074f307e9fe8766d4ce3c65506e8b3 Mon Sep 17 00:00:00 2001 From: sion123 <450702724@qq.com> Date: Wed, 3 Jun 2026 22:45:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(mix):=20=E6=B7=BB=E5=8A=A0=20ICE=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E6=8F=90=E4=BA=A4=E4=B8=93=E7=94=A8=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E6=B1=A0=E5=B9=B6=E6=B3=A8=E5=86=8C=20BouncyCastle=20?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=8F=90=E4=BE=9B=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为混剪任务配置增加两个关键基础设施:创建 ICE 异步提交专用线程池(核心 4 线程,最大 10 线程,使用 CallerRunsPolicy 拒绝策略),并注册 BouncyCastle 安全提供者以满足 ICE SDK 签名需求。这为混剪任务的异步执行提供了可靠的并发控制和安全依赖。 --- .../module/tik/mix/config/MixTaskConfig.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/config/MixTaskConfig.java b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/config/MixTaskConfig.java index 2e89d32bb9..f9a11e6b5c 100644 --- a/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/config/MixTaskConfig.java +++ b/yudao-module-tik/src/main/java/cn/iocoder/yudao/module/tik/mix/config/MixTaskConfig.java @@ -1,14 +1,56 @@ package cn.iocoder.yudao.module.tik.mix.config; +import lombok.extern.slf4j.Slf4j; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; +import java.security.Security; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + /** * 混剪任务配置 * * @author 芋道源码 */ +@Slf4j @Configuration @EnableScheduling public class MixTaskConfig { + + /** + * ICE 异步提交专用线程池 + *
+ * 核心线程 4,最大线程 10,空闲 60s 回收,有界队列 200, + * 拒绝策略:调用者线程执行(CallerRunsPolicy),确保任务不丢失 + */ + @Bean("iceSubmitExecutor") + public ThreadPoolExecutor iceSubmitExecutor() { + return new ThreadPoolExecutor( + 4, 10, + 60, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(200), + new ThreadPoolExecutor.CallerRunsPolicy() + ); + } + + /** + * 注册 BouncyCastle 安全提供者 + *
+ * ICE SDK 底层依赖 BC 做 API 请求签名({@code org.bouncycastle.crypto.Digest})。 + * Java 17 已内置 JCE,不再存在嵌套 JAR 签名校验失败的问题,直接注册即可。 + */ + static { + try { + if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) { + Security.addProvider(new BouncyCastleProvider()); + log.info("[MixTask] BouncyCastle Provider 已注册"); + } + } catch (Exception e) { + log.warn("[MixTask] BouncyCastle Provider 注册失败(如已存在则忽略): {}", e.getMessage()); + } + } }