stacksaga-spring-boot-starter 配置属性参考

属性名称 数据类型 默认值 描述说明

stacksaga.domain-entity-scan

String[]

[]

用于扫描带有 @SagaDomainEntity 注解的类的包名列表(以逗号分隔)。例如:com.example.domain,com.example.anotherdomain。

stacksaga.scheduler.execution.parallelism

int

Runtime.getRuntime().availableProcessors()

支持框架共享非阻塞 executionScheduler 的工作线程数 —— 该并行 reactor.core.scheduler.Scheduler(通过 Schedulers.newParallel("saga-exe", parallelism) 创建)负责驱动持续进行的响应式/Saga 处理,以及 ReactiveTransactionEventListener#onStateChanged 实现的运行环境。参见 ReactiveTransactionEventListener。

stacksaga.scheduler.blocking-execution.thread-cap

int

Runtime.getRuntime().availableProcessors() * 10

blockingExecutionScheduler 允许创建的最大线程数 —— 这是一个有界弹性 (Bounded-Elastic) reactor.core.scheduler.Scheduler,专门用于调用阻塞式、非响应式的用户代码(例如 TransactionEventListener#onStateChanged)。参见 TransactionEventListener。

stacksaga.scheduler.blocking-execution.queued-task-cap

int

100000

当达到 thread-cap 限制且所有线程均处于繁忙状态时,blockingExecutionScheduler 允许排队的最大任务数,超过此容量后将拒绝新任务提交。

stacksaga.scheduler.blocking-execution.ttl-seconds

int

60

空闲存活时间(以秒为单位),超过此时间未使用的 blockingExecutionScheduler 工作线程将被回收。

stacksaga.scheduler.blocking-execution.daemon

boolean

false

blockingExecutionScheduler 工作线程是否创建为守护线程。默认保持 false,以确保当监听器调用仍在进行中时 JVM 不会提前退出。

stacksaga.scheduler.graceful-shutdown-timeout-seconds

int

30

停机时在强制立即释放前,给予每个调度器正在进行/排队任务完成的等待超时时间(以秒为单位)。同时适用于 executionScheduler 与 blockingExecutionScheduler。

stacksaga.instance.cluster

String

-

当前实例所属的集群名称。各组件仅在 cluster 值相同时才能互相连接,因此必须在所有需要连接的 Master、Slave 以及编排器之间保持完全一致。

stacksaga.instance.region

String

default

当前实例所属的运行部署区域。用于标识事务来源、强制集群边界并协调分布式重试。 + NOTE: 默认为 default(区域代码 0)。如果配置了自定义区域(例如 us-east-1),必须声明自定义 SagaRegionResolver Spring Bean;否则应用程序启动时将快速失败并抛出 ValidationException。

stacksaga.instance.zone

String

-

当前实例所属的可用区 (Zone)。在此处无强制业务影响,但应按照 StackSaga 核心规范进行设置。