Exemplo n.º 1
0
            public void Execute(TaskExecuteContext context)
            {
                Tracer.Debug($"RedisHashSet clear is executing for '{CacheKey}'.");

                var set = Client.HGetAll(CacheKey);

                set.ForEach(s =>
                {
                    if (!string.IsNullOrEmpty(s.Value))
                    {
                        try
                        {
                            var value = Deserialize(s.Value);
                            if (value != null && value.HasExpired())
                            {
                                if (Client.HExists(CacheKey, s.Key))
                                {
                                    Client.HDel(CacheKey, s.Key);
                                }
                            }
                        }
                        catch (Exception exp)
                        {
                            Tracer.Error($"RedisHashSet ExpireTaskExecutor throw exception:\n{exp.Output()}");
                        }
                    }
                });
            }
Exemplo n.º 2
0
        /// <summary>
        /// 执行任务。
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Execute(IJobExecutionContext context)
        {
            if (context.MergedJobDataMap["executor"] is ITaskExecutor executor)
            {
                var service           = context.MergedJobDataMap["serviceProvider"] as IServiceProvider;
                var arguments         = context.MergedJobDataMap["arguments"] as IDictionary <string, object>;
                var cancellationToken = (CancellationToken)context.MergedJobDataMap["cancellationToken"];

                var econtext = new TaskExecuteContext(service, arguments, cancellationToken);
                executor.Execute(econtext);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 执行任务。
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Execute(IJobExecutionContext context)
        {
            if (context.MergedJobDataMap["executor"] is IAsyncTaskExecutor executor)
            {
                var serviceProvider   = context.MergedJobDataMap["serviceProvider"] as IServiceProvider;
                var arguments         = context.MergedJobDataMap["arguments"] as IDictionary <string, object>;
                var cancellationToken = (CancellationToken)context.MergedJobDataMap["cancellationToken"];

                using var scope = serviceProvider.TryCreateScope();
                var econtext = new TaskExecuteContext(scope.ServiceProvider, arguments, cancellationToken);
                await executor.ExecuteAsync(econtext);
            }
        }
Exemplo n.º 4
0
            public void Execute(TaskExecuteContext context)
            {
                var cacheMgr = context.ServiceProvider.TryGetService <ICacheManager>();

                if (cacheMgr == null)
                {
                    return;
                }

                var barrier = context.Arguments["barrier"];

                Tracer.Debug($"CacheClearTaskExecutor is executing for '{barrier}'.");

                var rootKey = barrier == null ? $"{CACHE_KEY}.keys" : CacheHelper.GetCacheKey(context.ServiceProvider, $"{CACHE_KEY}.keys", barrier);
                var hashSet = cacheMgr.GetHashSet <string, List <string> >(rootKey, checkExpiration: false);

                void clearKeys(string key)
                {
                    try
                    {
                        if (hashSet.TryGet(key, out List <string> subKeys) && subKeys != null)
                        {
                            for (var i = subKeys.Count - 1; i >= 0; i--)
                            {
                                if (!cacheMgr.Contains(subKeys[i]))
                                {
                                    subKeys.RemoveAt(i);
                                }
                            }

                            hashSet.Add(key, subKeys);
                        }
                    }
                    catch (Exception exp)
                    {
                        Tracer.Error($"CacheClearTaskExecutor throw exception when the key of '{barrier}-{key}' is cleared:\n{exp.Output()}");
                    }
                }

                hashSet.GetKeys().ForEach(s =>
                {
                    if (cacheMgr is IEnhancedCacheManager ehCache)
                    {
                        ehCache.UseTransaction(string.Concat(rootKey, ":", s, ":Execute"), () => clearKeys(s), TimeSpan.FromSeconds(10));
                    }
                    else
                    {
                        _locker.LockWrite(() => clearKeys(s));
                    }
                });
            }
Exemplo n.º 5
0
 public void Execute(TaskExecuteContext context)
 {
     Console.WriteLine(DateTime.Now + " ccc");
 }
Exemplo n.º 6
0
 public async Task ExecuteAsync(TaskExecuteContext context)
 {
     Console.WriteLine(DateTime.Now + " bbb");
 }