using Coldairarrow.Util; using CSRedis; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Caching.Redis; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; namespace Coldairarrow.Api { public static class HostExtentions { /// /// 使用IdHelper /// /// 建造者 /// public static IHostBuilder UseIdHelper(this IHostBuilder hostBuilder) { hostBuilder.ConfigureServices((buidler, services) => { new IdHelperBootstrapper() //设置WorkerId .SetWorkderId(buidler.Configuration["WorkerId"].ToLong()) //使用Zookeeper //.UseZookeeper("127.0.0.1:2181", 200, GlobalSwitch.ProjectName) .Boot(); }); return hostBuilder; } /// /// 使用缓存 /// /// 建造者 /// public static IHostBuilder UseCache(this IHostBuilder hostBuilder) { hostBuilder.ConfigureServices((buidlerContext, services) => { var cacheOption = buidlerContext.Configuration.GetSection("Cache").Get(); switch (cacheOption.CacheType) { case CacheType.Memory: services.AddDistributedMemoryCache(); break; case CacheType.Redis: { var csredis = new CSRedisClient(cacheOption.RedisEndpoint); RedisHelper.Initialization(csredis); services.AddSingleton(csredis); services.AddSingleton(new CSRedisCache(RedisHelper.Instance)); }; break; default: throw new Exception("缓存类型无效"); } }); return hostBuilder; } } }