Пример #1
0
        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);
        }
Пример #2
0
#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);
        }
Пример #3
0
        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);
        }