2026-09-07 15:11:33 +08:00
|
|
|
|
package com.gzzn.omms.msgexchange.domain
|
2026-09-06 16:13:50 +08:00
|
|
|
|
|
2026-09-09 17:53:08 +08:00
|
|
|
|
/** MSG_EVENT 事件形态(§7.3)。 */
|
|
|
|
|
|
enum class EventType { UPSERT, TOMBSTONE }
|
2026-09-06 16:13:50 +08:00
|
|
|
|
|
2026-09-09 17:53:08 +08:00
|
|
|
|
/** MSG_EVENT 投递状态(outbox 状态机)。 */
|
2026-09-06 16:13:50 +08:00
|
|
|
|
enum class EventStatus { PENDING, SENT, DEAD }
|
|
|
|
|
|
|
2026-09-09 17:53:08 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* MSG_EVENT(outbox,§3.2):状态、变更、删除通知。
|
|
|
|
|
|
* KAFKA_SCHD 整态 + KAFKA_MSG 变化通知;TOMBSTONE 仅在 ACTIVE→DELETED 时
|
|
|
|
|
|
* 与删除同事务登记(§7.3),投递失败持续重试。
|
|
|
|
|
|
*/
|
2026-09-06 16:13:50 +08:00
|
|
|
|
data class MsgEvent(
|
|
|
|
|
|
val eventId: Long? = null,
|
|
|
|
|
|
val target: String,
|
2026-09-09 17:53:08 +08:00
|
|
|
|
val partitionKey: String, // 恒为 FLID
|
|
|
|
|
|
val eventType: EventType = EventType.UPSERT,
|
|
|
|
|
|
val stateVersion: Long = 0, // 发布时航班版本;Dispatcher 合并同 FLID 未发事件取最新(§7.3)
|
2026-09-06 16:13:50 +08:00
|
|
|
|
val payloadJson: String,
|
|
|
|
|
|
val state: EventStatus = EventStatus.PENDING,
|
|
|
|
|
|
val attempts: Int = 0,
|
|
|
|
|
|
val nextAttemptAt: java.time.Instant? = null,
|
|
|
|
|
|
val errorClass: ErrorClass? = null,
|
|
|
|
|
|
val lastError: String? = null,
|
|
|
|
|
|
val createdAt: java.time.Instant = java.time.Instant.now(),
|
|
|
|
|
|
)
|