Files
msgexchange-v2/src/main/kotlin/com/gzzn/omms/msgexchange/processing/MessageLifecycleGate.kt
T

18 lines
539 B
Kotlin
Raw Normal View History

package com.gzzn.omms.msgexchange.processing
import jakarta.inject.Singleton
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock
/**
* 串行化“终态回填”与“人工重放”,避免旧回填任务在消息重新入队后写入信箱标记。
* 生产只允许单活动实例;该锁处理同一实例内的 job 线程和管理请求并发。
*/
@Singleton
class MessageLifecycleGate {
private val lock = ReentrantLock()
fun <T> exclusive(block: () -> T): T = lock.withLock(block)
}