zoukankan      html  css  js  c++  java
  • Asp.Net Core 集成 Hangfire 配置使用 Redis 存储

    Hangfire 官方支持 MSSQL 与 Redis(Hangfire.Pro.Redis) 两种 ,由于我的数据库是 MYSQL ,粗略查询了一下文档,现在对 .NET Core 支持的并不够好,所有就选择了 Redis;当然也可以使用第三方来支持 PostgreSql,Mongo

    安装 Redis

    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:chris-lea/redis-server
    sudo apt-get update
    sudo apt-get install redis-server
    ps aux | grep redis
    sudo service redis-server restart
    sudo apt-get remove redis-server
    redis-cli
    #注释bind
    # bind 127.0.0.1
    #守护进程启动
    daemonize yes
    #保护模式[无密码模式设置为no]
    protected-mode no
    #设置密码
    requirepass test
    Mac 下安装 Redis Desktop Manager(官方 Mac 版只支持源码重编译)

    #install brew cask
    ruby -e "$(curl -fsSL
    https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
    #install Redis Desktop Manager
    brew cask install rdm

    Asp.Net Core 集成Hangfire

    Hangfire.Pro 是对 Hangfire 的一个扩展,使用自己搭建的 Nuget 源,Hangfire.Pro.Redis 是其中的一个扩展 ;我这里是使用的 Hangfire.Redis.StackExchange 基本满足需求。

    增加 package
    <PackageReference Include="Hangfire.AspNetCore" Version="1.6.12" />
    <PackageReference Include="Hangfire.Redis.StackExchange.StrongName" Version="1.7.0" />
    <PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.3" />
    配置 Hangfire 服务
     /// <summary>
        /// 启动类 
        /// </summary>
        public class Startup
        {
            /// <summary>
            /// 配置接口
            /// </summary>
            public IConfigurationRoot Configuration { get; }
    
            /// <summary>
            /// Redis 服务
            /// </summary>
            public static ConnectionMultiplexer Redis;
    
            /// <summary>
            /// 构造方法
            /// </summary>
            /// <param name="env"></param>
            public Startup(IHostingEnvironment env)
            {
                var builder = new ConfigurationBuilder()
                              .SetBasePath(env.ContentRootPath)
                              .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                              .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                              .AddEnvironmentVariables();
                Configuration = builder.Build();
                Redis = ConnectionMultiplexer.Connect(Configuration.GetConnectionString("Redis"));
            }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddOptions();
                //自定义的配置
                services.Configure<DbSetting>(Configuration.GetSection("ConnectionStrings"));
                //返回大小写问题
                services.AddMvc()
                        .AddJsonOptions(option => option.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver());
                //注入Hangfire服务
                services.AddHangfire(config => config.UseRedisStorage(Redis));
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                loggerFactory.AddConsole(Configuration.GetSection("Logging"));
                loggerFactory.AddDebug();
    
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                    app.UseBrowserLink();
                }
                else
                {
                    app.UseExceptionHandler("/Home/Error");
                }
    
                app.UseStaticFiles();
    
                app.UseHangfireServer();
                app.UseHangfireDashboard("/hangfire", new DashboardOptions
                {
                    Authorization = new[] { new HangfireDashboardAuthorizationFilter() }
                });
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Hq}/{action=Index}/{id?}");
                });
            }
        }

    https://github.com/marcoCasamento/Hangfire.Redis.StackExchange
    http://docs.hangfire.io/en/latest/configuration/using-redis.html
    https://github.com/uglide/RedisDesktopManager
    https://www.hangfire.io/extensions.html
  • 相关阅读:
    超详细的 Vagrant 上手指南
    简单聊聊 Ironic
    什么是裸金属
    使用 minikube 快速上手 Kubernetes | v1.7.3
    来看看你对Python变量理解到位了没有
    python HelloWorld 的 4 种姿势,你知道几种
    Windows 系统安装 Python 3.8 详解
    myeclipse2017下载安装与破解详细教程
    eclipse中tomcat的add and Remove找不到项目
    cmd中查看MySQL数据库表数据及结构
  • 原文地址:https://www.cnblogs.com/Irving/p/6884760.html
Copyright © 2011-2022 走看看