docs(acm2-75): 精简不变量与声明边界,去掉无依据条目
审改 specification 管道/航班域/投影与 CLM:作废与需求重复或依据不足的 INV/CLM,白话重写保留条款,并同步架构、实现与引用注释。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -12,7 +12,7 @@ import org.apache.kafka.clients.producer.ProducerRecord
|
||||
* Kafka 真实投递端口:通过 [ProducerRegistry] 拿 default 生产者,D2 参数
|
||||
* (acks=all / enable-idempotence=true / max-in-flight=1)由 `KafkaD3Check` 启动自检。
|
||||
*
|
||||
* 发送同步等 broker 确认(`Future.get()`),语义是至少一次——满足 INV-10 / C-29。
|
||||
* 发送同步等 broker 确认(`Future.get()`),语义是至少一次——满足 C-9 / US-08。
|
||||
* 仅在 `msgx.stubs != true` 时装配;stub 模式走 `StubDeliveryPort`。
|
||||
*/
|
||||
@Requires(property = "msgx.stubs", notEquals = "true")
|
||||
|
||||
@@ -31,7 +31,7 @@ class InboxService(
|
||||
data class Receipt(val msgId: Long, val receivedAt: Instant)
|
||||
|
||||
fun accept(rawXml: String): Receipt {
|
||||
// 接收结果边界 = insertRaw 是否成功返回 ID(C-28 只承诺到落信)。只有这一步失败才返回失败;
|
||||
// 接收结果边界 = insertRaw 是否成功返回 ID(C-8 只承诺到落信)。只有这一步失败才返回失败;
|
||||
// 之后的读取/入队失败若冒泡成 HTTP 失败,客户端重试会在信箱里多写一行。
|
||||
val id = inbox.insertRaw(rawXml)
|
||||
val now = clock.instant()
|
||||
@@ -49,7 +49,7 @@ class InboxService(
|
||||
// 入队时间单独传本地时钟:它是超期判据 R 的比较对象,不能借用库方时间(PRE-4)。
|
||||
procState.insertIfAbsent(id, receivedAt, enqueuedAt = now)
|
||||
} catch (e: Exception) {
|
||||
// PG 入队失败不回退接收结果:原文已在信箱,轮询会按 ID 补建,且只建一条(INV-1、US-01)。
|
||||
// PG 入队失败不回退接收结果:原文已在信箱,轮询会按 ID 补建,且只建一条(INV-2b、US-01)。
|
||||
pgEnqueueFailures.incrementAndGet()
|
||||
log.error("compat accepted but PG enqueue failed msgId={}; poller will re-create", id, e)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user