feat(acm2): 闭合 G-KAFKA-D3 / G-IGNORE / G-EVENT-RETENTION 三个缺口

- G-KAFKA-D3:max-in-flight 默认收敛到 1,KafkaD3Check 启动自检钉住三项联合满足 D3
- G-IGNORE:IgnoreRules 在身份绑定后精确匹配 TYPE 字段,命中写 SKIPPED + 回填意图
- G-EVENT-RETENTION:V10 迁移加 SENT_AT 列,投递原子写,EventCleanupJob 有界清理过期 SENT 行
This commit is contained in:
windyboy
2026-09-13 15:48:16 +08:00
parent d37a9eb38e
commit fc744d0cfd
23 changed files with 540 additions and 35 deletions
+4 -3
View File
@@ -96,11 +96,12 @@ kafka:
servers: ${MSGX_KAFKA_SERVERS}
producers:
default: # U03/R09Micronaut Kafka 按具名 producer 解析,须有 default 层
# 默认 acks=all + 幂等(现代 Kafka 3.x+);若对接旧版 Broker(如现网 0.10.x/1.x,无 INIT_PRODUCER_ID 协议),
# 经 MSGX_KAFKA_ACKS=1 与 MSGX_KAFKA_IDEMPOTENCE=false 降级兼容。
# D3acks=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:5}
max-in-flight-requests-per-connection: ${MSGX_KAFKA_MAX_IN_FLIGHT:1}
eureka:
client:
registration:
@@ -0,0 +1,13 @@
-- =====================================================================
-- V10MSG_EVENT 增加 SENT_AT,为有界清理提供时间基准(G-EVENT-RETENTION
--
-- 所有投递确认操作在设置 STATE='SENT' 的同一条 UPDATE 中写入 SENT_AT
-- 清理作业只删除 STATE='SENT' AND SENT_AT IS NOT NULL AND SENT_AT < now - retention。
--
-- 存量 SENT 行的 SENT_AT 设为迁移时刻 CURRENT_TIMESTAMP
-- 避免迁移完成后它们立即过期被清理掉。
-- =====================================================================
ALTER TABLE msg_event ADD COLUMN sent_at TIMESTAMP(6) WITH TIME ZONE;
UPDATE msg_event SET sent_at = CURRENT_TIMESTAMP WHERE state = 'SENT';