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:
@@ -130,7 +130,7 @@ class Dispatcher(
|
||||
// 未知目标不能在"未发送"的情况下被标记为已发;记账后停止本轮。
|
||||
else -> error("unknown delivery target: $target")
|
||||
}
|
||||
msgEvents.markSent(eventId)
|
||||
msgEvents.markSent(eventId, scheduler.now())
|
||||
true
|
||||
} catch (ex: Exception) {
|
||||
retryOrDead(e, ex.message ?: ex.javaClass.simpleName)
|
||||
@@ -158,7 +158,7 @@ class Dispatcher(
|
||||
EventType.UPSERT -> port.sendKafkaSchd("schd", e.partitionKey, e.payloadJson)
|
||||
}
|
||||
// 条件确认:读取时刻的代次(EVENT_ID + STATE_VERSION)被新写入覆盖时不标记,留待下一轮重发。
|
||||
e.eventId?.let { msgEvents.markSentIfVersion(it, e.stateVersion) }
|
||||
e.eventId?.let { msgEvents.markSentIfVersion(it, e.stateVersion, scheduler.now()) }
|
||||
} catch (ex: Exception) {
|
||||
failures.add(e)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user