Skip to content

配置项参考 ​

本文档列出 Pragmatic DDD 各模块的配置项。

1. 本地事件管理器配置 ​

前缀:event.local

键类型默认值说明
scheduler-threadsint2调度线程数(延迟投递)
core-pool-sizeintmax(4, processors)核心线程数
max-pool-sizeintmax(8, processors*2)最大线程数
queue-capacityint1000任务队列容量
keep-alive-secondslong60空闲线程存活秒数
delivery-delay-msint1000延迟投递间隔(毫秒)
max-retry-timesint3最大重试次数
retry-delay-msint1500重试间隔(毫秒)

2. RocketMQ 配置 ​

前缀:rocketmq

键类型默认值说明
name-serverString-NameServer 地址(Remoting)
proxy-addrString-gRPC Proxy 地址(5.x)
producer-groupStringDEFAULT_PRODUCER_GROUPProducer 组名
consumer-groupStringPRAGMATIC_DDD_RMQ_CONSUMERConsumer 组名
retry-times-when-send-failedint3发送失败重试次数
send-msg-timeoutint3000发送超时(毫秒)
compress-msg-body-over-howmuchint4096压缩阈值(字节)
default-delay-levelint3默认延迟级别
max-reconsume-timesint16消费最大重试次数

3. Outbox Relay 配置 ​

前缀:outbox(通过 OutboxRelayConfig.bind(IConfigurationSource) 绑定)

键类型默认值说明
poll-intervalDuration5min轮询间隔
graceDuration30s宽限时间(超过此时间的 PENDING 才会被认领)
batch-sizeint200每次认领批量
max-attemptsint10最大重试次数

也可通过构造器直接传入(record 参数顺序:(pollInterval, grace, batchSize, maxAttempts));不配置时使用 OutboxRelayConfig.defaultConfig() 的内置默认值。

4. MyBatis TypeHandler 配置 ​

TypeHandler 通过 TypeHandlerContext(record)装配,非配置文件:

组件说明
EnumValueResolver枚举解析注册表
JsonSerializerJSON 序列化器
JdbcJsonValueJDBC 驱动适配
enumRulesMap<Class<?>, EnumRule> 枚举策略
voTypesCollection<Class<?>> VO 类型
collectionsCollectionElementTypeConfig 集合配置

5. Kafka 配置 ​

前缀:pragmatic-ddd.event.kafka(通过 ConfigurationBinder.bind(IConfigurationSource, "pragmatic-ddd.event.kafka", KafkaProperties.class) 绑定)

完整键清单与默认值见 Kafka 集成 §2.1 统一配置。

在 Spring Boot Starter 下的差异

模块层把 pragmatic-ddd.event.kafka.bootstrap-servers / pragmatic-ddd.event.kafka.group 视为必填;DddKafkaAutoConfiguration 绑定时会传入兜底默认值(127.0.0.1:9092 / pragmatic_ddd_consumer),因此这两项不写也不会报错。使用 starter 时建议显式配置,避免默默连到本机。

6. Spring Boot Starter 配置项 ​

6.1 事件总线切换 ​

键取值默认说明
pragmatic-ddd.event.busrocketmq / kafkarocketmq两条总线装配互斥;缺省即生效 RocketMQ,选 Kafka 必须显式写 kafka;写其他值则两个总线装配均不生效

6.2 Outbox 链路(前缀 pragmatic-ddd.outbox) ​

由 DddOutboxProperties(官方 @ConfigurationProperties)绑定:

键类型默认值说明
enabledbooleantrue关掉后 Outbox 整块不装配,补偿链路连带不装配
publisher-pool-sizeint4提交后主动推送器的线程池大小
poll-intervalDuration5m兜底轮询间隔
graceDuration30s认领宽限期,仅轮询创建时间早于 now - grace 的 PENDING 记录
batch-sizeint200单轮认领的最大记录数
max-attemptsint10单条记录最大重试次数,超过转死信

后四项经 toRelayConfig() 映射为 OutboxRelayConfig(pollInterval, grace, batchSize, maxAttempts)。Duration 支持 ISO-8601 与简单写法(30s / 5m)。

6.3 补偿链路(前缀 pragmatic-ddd.compensation) ​

键类型默认值说明
enabledbooleantrue由自动配置类上的条件注解独占(不进 DddCompensationProperties);关掉后不装配 CompensableCommandExecutor
modeStringin-memory由 DddCompensationProperties 绑定;durable 时嵌套子块自动装配 ICompensationStatementExecutor、ICompensationLog、CompensationRelay 与轮询调度,前提是 classpath 有 pragmatic-ddd-mybatis 且容器有 SqlSessionTemplate
relay-poll-intervalDuration10sdurable 中继轮询间隔;必须为正,否则启动即失败

边界与回落

  • 中继的批量上限(100)、重试次数(5)与认领租约(5min)是 core CompensationRelay 的内部常量,不可外部化。
  • mode=durable 但底座缺失时回落 in-memory 并打一次 WARN;有日志但无 ICompensationHandler 时不挂中继并 WARN。两类缺失均不再静默降级。

6.4 键名前缀与绑定规则 ​

前缀绑定机制relaxed binding
pragmatic-ddd.outbox.*、pragmatic-ddd.compensation.*Spring 官方 @ConfigurationProperties支持(poll-interval / pollInterval 等效)
pragmatic-ddd.event.bus、pragmatic-ddd.event.rocketmq.*、pragmatic-ddd.event.kafka.*框架 ConfigurationBinder(读 IConfigurationSource)不支持,仅 kebab-case 精确匹配

易错点

pragmatic-ddd.event.rocketmq.name-server 写成 pragmatic-ddd.event.rocketmq.nameServer 读不到;事件类键(pragmatic-ddd.event.bus、pragmatic-ddd.event.rocketmq.*、pragmatic-ddd.event.kafka.*)均已统一带 pragmatic-ddd. 前缀。完整装配链路与生效条件见 Spring Boot Starter 集成。