Files
msgexchange-v2/src/main/resources/application.yml
T
windyboyandCursor fd65bb24fb docs(acm2-75): 按需求与架构收口契约和规范
补齐接口契约的入站、Redis 与出站边界,规范对齐已定语义并作废过期条款;Kafka 生产端约束编号改为 D2。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 08:49:19 +08:00

114 lines
5.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =====================================================================
# msgexchange-nextgen 配置(ACM2-12 口径)
# 系统角色:机场 OMMS 上游报文处理中间件(JDBC 轮询共享 CMINMSGS 为主路径;
# compat HTTP POST /cminmsgs/send 为辅助写路径)。
# 口令/端点全部环境变量外置——零入库。
# 存储边界:自有 PostgreSQLdatasources.default,全部内部状态与运营航班权威 FLIGHT_SCHD/SCHD_GEN+
# 共享 MySQL 信箱(mailbox.shared-mysql,仅 DML,不建表)+
# Kafka + Eureka/logstash。权威设计:docs/implementation.md。
# 键位口径:Micronaut 5.1U03):datasources.* / flyway.datasources.* /
# kafka.producers.<name>.* / eureka.client.*Micronaut 原生键)。
# =====================================================================
msgx:
service-name: msgexchangeapi # 契约冻结;影子实例用 msgexchangeapi-shadow
register-eureka: true # 影子对拍期置 false 或独立服务名
pipeline: # —— ACMA-8 参数表初值(阶段 0 基线校准)——
poll-interval: 1s # KEEP 现役 1s 轮询节奏
claim-batch: 50
max-attempts: 5 # 处理/投递同值
backoff-ms: [1000, 2000, 4000, 8000] # 指数退避;档位数必须 = max-attempts - 1(启动自检)
backoff-cap-ms: 60000
max-commit-delay: 5m # 空洞老化:W+1 空洞超过该时延判定为永久(Q2 最大提交时延)
overdue-backfill: 30d # 超期补写期限 R:仅须 R ≤ R_keep;判据比较本地 ENQUEUED_ATimplementation.md「回填」)
backfill-batch: 100 # 回填扫描单批条数
backfill-max-attempts: 100 # 单行重试的告警阈值;放弃判据是 R 超期,不是次数(implementation.md「回填」)
# 一次性切流播种:默认(注释掉)不播种。min=读现存全部 | zero=从 0 按空洞规则 | max=跳过可见存量 | <id>
# cutover-watermark: min
autostart: false # U07:启动即拉起 Pump/Dispatcher 循环;需真实仓储或 msgx.stubs=true 才开启(dev 见 application-dev.yml
schd:
flush-period: 3s # KEEP 现役推送节律
flush-limit: 500 # 批上限,防积压尖峰
operation-day: # SODT + 机场时区 + 切日边界(默认占位 0 点,待业务确认)
zone: Asia/Shanghai
cutoff-hour: 0
history: # 历史判定窗口与保留期
cancelled-hours: 48
terminal-hours: 48
deleted-hours: 48
idle-hours: 168
snap-log-retention-days: 90
history-store-enabled: false # 未接通历史存储时 HISTORY_SWEEP 删 0 条
micronaut:
application:
name: msgexchange-nextgen
server:
port: 8080
# 管理端点(U03/N32):/env、/beans 默认 sensitive;仅开发/影子环境放开——见 application-dev.yml
# 自有 PostgreSQL:全部内部状态(PIPELINE_LOCK/PROC_STATE/MSG_EVENT/REQ_TRACK/INBOX_CURSOR/
# FLIGHT_SCHD 及明细表/SCHD_SNAP_LOG;迁移为单基线 db/migration/V1__flight_state_baseline.sql
# 原 V2–V10 的净结构已合并其中,回填事实与处理终态同表同行)。
# 数据层实装前 enabled=falsestub 模式不建连)。
datasources:
default:
enabled: false
url: ${MSGX_PG_URL}
username: ${MSGX_PG_USER}
password: ${MSGX_PG_PASSWORD}
driver-class-name: org.postgresql.Driver
# 有界外部调用:取连接/校验/空闲/寿命都有上限,避免线程无界等待。
# 注意 Micronaut 的 Hikari 配置项是**毫秒数(long**,不是 Duration 字面量。
connection-timeout: 5000
validation-timeout: 3000
idle-timeout: 300000
max-lifetime: 1800000
# 驱动级超时(秒):connectTimeout/socketTimeout,防止网络黑洞挂住调用线程。
data-source-properties:
connectTimeout: 3
socketTimeout: 30
flyway:
datasources:
default:
enabled: ${MSGX_FLYWAY_ENABLED:true}
locations: classpath:db/migration
# 共享 MySQL 信箱(他人系统库,仅 DML:上游外部写 CMINMSGS;本系统 JDBC 轮询读 +
# 处理回填;出站写 COUTMSGS;不建表/schemaACM2-12)。驱动/依赖与信箱适配层
# CminmsgMailbox/OutboxMailbox)随 U05 批次引入。
mailbox:
processed-value: PROCESSED # 处理标记写入值(C-5/Q7:值集与写权限以库方契约为准)
shared-mysql:
enabled: false
url: ${MSGX_MAILBOX_URL}
username: ${MSGX_MAILBOX_USER}
password: ${MSGX_MAILBOX_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver
# 有界外部调用(必填语义,默认即有限):Connector/J 默认 socketTimeout=0 = 无限等待
connect-timeout-ms: 3000
socket-timeout-ms: 30000
pool-connection-timeout-ms: 5000
pool-validation-timeout-ms: 3000
kafka:
bootstrap:
servers: ${MSGX_KAFKA_SERVERS}
producers:
default: # U03/R09Micronaut Kafka 按具名 producer 解析,须有 default 层
# D2acks=all + 幂等 + max-in-flight=1 联合保证幂等生产;
# 若对接旧版 Broker(如现网 0.10.x/1.x,无 INIT_PRODUCER_ID 协议),
# 三项须同时降级为 MSGX_KAFKA_ACKS=1 / MSGX_KAFKA_IDEMPOTENCE=false / MSGX_KAFKA_MAX_IN_FLIGHT=1。
acks: ${MSGX_KAFKA_ACKS:all}
enable-idempotence: ${MSGX_KAFKA_IDEMPOTENCE:true}
max-in-flight-requests-per-connection: ${MSGX_KAFKA_MAX_IN_FLIGHT:1}
eureka:
client:
registration:
enabled: ${msgx.register-eureka}
default-zone: ${MSGX_EUREKA_URL:http://127.0.0.1:8761/eureka}
# logstash TCP JSON 通道保留(字段兼容现网,ACMA-3 部署前提)。
# U03/N13logback 在 Micronaut 配置体系之外独立初始化,不读本文件——地址见 logback.xml
# 环境变量统一前缀 MSGX_LOGSTASH_HOST / MSGX_LOGSTASH_PORT(不要再在此处定义 logstash.* 死键)。