namespace CloudGaming.Shared.Admin.MessageHandler; /// /// 消费日志 /// public class WriteLogHandler : IBus { public string topic => "WriteInLog"; private readonly static ConcurrentBag InsertList = []; private readonly static object _lock = new(); private readonly IRepository _sysOperationLogRepository; public WriteLogHandler(IRepository sysOperationLogRepository) { _sysOperationLogRepository = sysOperationLogRepository; } public async Task HandlerAsync(SysOperationLog data) { lock (_lock) { if (InsertList.Count > 200) { _sysOperationLogRepository.InsertRange(InsertList); InsertList.Clear(); } InsertList.Add(data); } await Task.CompletedTask; } /// /// 10分钟检测一次 InsertList /// [Scheduled("0 0/2 * * * ?", remark: "2分钟检测一次 InsertList")] public string Run() { lock (_lock) { if (InsertList.Count > 0) { _sysOperationLogRepository.InsertRange(InsertList); } InsertList.Clear(); } return "ok"; } }