public async Task <MessagePayload?> MessagePayload(string messageId) { if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"messagePayload({messageId})"); } if (string.IsNullOrWhiteSpace(messageId)) { throw new ArgumentException("no id"); } //1. Try to get from cache first var cachedPayload = MessagePayloadCache(messageId); if (cachedPayload != null) { return(cachedPayload); } //2. Cache not found var rawPayload = await MessageRawPayload(messageId); var payload = await MessageRawPayloadParser(rawPayload); CacheMessagePayload.Set(messageId, payload); if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"messagePayload({messageId}) cache SET"); } return(payload); }
#pragma warning disable CS1998 // 异步方法缺少 "await" 运算符,将以同步方式运行 protected async Task MessagePayloadDirty(string messageId) #pragma warning restore CS1998 // 异步方法缺少 "await" 运算符,将以同步方式运行 { if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"messagePayloadDirty({messageId})"); } CacheMessagePayload.Delete(messageId); }
protected MessagePayload?MessagePayloadCache(string messageId) { if (string.IsNullOrWhiteSpace(messageId)) { throw new ArgumentException("no id"); } var cachedPayload = CacheMessagePayload.Get(messageId); if (cachedPayload == null) { if (Logger.IsEnabled(LogLevel.Trace)) { Logger.LogTrace($"messagePayloadCache({messageId}) cache MISS"); } } return(cachedPayload); }