<li id="lnc9q"><tr id="lnc9q"><u id="lnc9q"></u></tr></li>
<dd id="lnc9q"><big id="lnc9q"></big></dd>
<dd id="lnc9q"><track id="lnc9q"></track></dd>
    <li id="lnc9q"><tr id="lnc9q"><kbd id="lnc9q"></kbd></tr></li>
    <rp id="lnc9q"></rp>
    1. <button id="lnc9q"><acronym id="lnc9q"><u id="lnc9q"></u></acronym></button>

      1. <span id="lnc9q"></span>

        <tbody id="lnc9q"><pre id="lnc9q"></pre></tbody>
        <button id="lnc9q"></button>
        新聞

        Hangfire 分布式后端作業調度框架服務

        .NetCore學院 2021-3-29 19:10:06 | 閱讀:
        這是一款開源的作業調度框架

        github地址 https://github.com/HangfireIO/Hangfire

        官網 https://www.hangfire.io/

        中文文檔 https://www.bookstack.cn/read/hangfire-zh/blankquick-start

        這邊分享一下我從建立項目到部署的一個簡單的例子:

        首先新建一個空的framework版本的MVC項目

        然后執行

        PM> Install-Package Hangfire
        PM> Install-Package Hangfire.AspNet
        這樣程序會將hangfire依賴的包下載安裝到項目中,然后給項目添加OwinStartup類

        然后在Startup類中對hangfire進行初始化

        1、使用儀表盤

        2、使用sqlserver數據庫

        3、因為儀表盤只能在本地訪問,服務器訪問返回401,所以需要權限過濾添加一個賬戶,在訪問儀表盤頁面的時候輸入賬號密碼即可進行訪問,密碼可以直接使用字符串如下,如果想保存為字節類型的則需要將明文的密碼轉換成字節形式代碼如下
         
        using Hangfire;
        using Hangfire.Dashboard;
        using Hangfire.SqlServer;
        using Microsoft.Owin;
        using Owin;
        using System;
        using System.Collections.Generic;
        using System.Diagnostics;
        using System.Linq;
        using System.Text;
         
        [assembly: OwinStartup(typeof(HangFireTest.Startup))]
        namespace HangFireTest
        {
            public class Startup
            {
                private IEnumerable<IDisposable> GetHangfireServers()
                {
                    GlobalConfiguration.Configuration
                        .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
                        .UseSimpleAssemblyNameTypeSerializer()
                        .UseRecommendedSerializerSettings()
                        .UseSqlServerStorage("Data Source=10.18.193.200; Initial Catalog=HangfireTest; User ID=sa;Password=123456", new SqlServerStorageOptions
                        {
                            CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
                            SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
                            QueuePollInterval = TimeSpan.Zero,
                            UseRecommendedIsolationLevel = true,
                            UsePageLocksOnDequeue = true,
                            DisableGlobalLocks = true
                        });
         
                    yield return new BackgroundJobServer();
                }
         
                public void Configuration(IAppBuilder app)
                {
                    app.UseHangfireAspNet(GetHangfireServers);
                    var filter = new BasicAuthAuthorizationFilter(
                      new BasicAuthAuthorizationFilterOptions
                      {
                          SslRedirect = false,
                          // Require secure connection for dashboard
                          RequireSsl = false,
                          // Case sensitive login checking
                          LoginCaseSensitive = false,
                          // Users
                          Users = new[]
                          {
                                //new BasicAuthAuthorizationUser
                                //{
                                //    Login = "Administrator-1",
                                //    // Password as plain text
                                //    PasswordClear = "test"
                                //},
                                new BasicAuthAuthorizationUser
                                {
                                    Login = "admin",//用戶名
                                    // Password as SHA1 hash
                                   // Password = new byte[]{  0x9f,0x71,0x30,0xf4,0x22,0x90,0xd0,0xe0,0xce,0x5a,0x8a,0x7a,0x09,0xd2,0xba,0x75,0x53,0x6d,0x05,0x64 }//密碼
                                   PasswordClear="123456"
                                }
                          }
                      });
                    var options = new DashboardOptions
                    {
                        AuthorizationFilters = new[] {
                            filter
                        }
                    };
                    app.UseHangfireDashboard("/Hangfire", options); //可以改變Dashboard的url
                    // Let's also create a sample background job
                    //立即執行
                    BackgroundJob.Enqueue(() => Debug.WriteLine("Hello world from Hangfire!"));
                    //BackgroundJob.Enqueue<EIPNewsSync>(x => x.AsyncNews());
                    //立即執行調用后臺方法
                    BackgroundJob.Enqueue(() => new MyTasks().DoAsync());
                    //可以設置延遲執行
                    BackgroundJob.Schedule(
                     () => Console.WriteLine("延遲了2分鐘執行!"),
                         TimeSpan.FromMinutes(2));
                    //可以設置定時執行循環執行
                    RecurringJob.AddOrUpdate<EIPNewsSync>(x => x.AsyncNews(), "0 */5 * * * ?");//Cron語法 每5分鐘執行一次
         
                }
            }
        }
        
        
        
        
         string password = "qwe123!";//將密碼轉換為字節形式
                    using (var cryptoProvider = System.Security.Cryptography.SHA1.Create())
                    {
                        byte[] passwordHash = cryptoProvider.ComputeHash(Encoding.UTF8.GetBytes(password));
                        string result = "new byte[] { " +
                            String.Join(",", passwordHash.Select(x => "0x" + x.ToString("x2")).ToArray())
         
                            + " } ";
                    }
         

         
        這邊可以對任務進行很多的操作,細節見官方文檔,這邊只做一個記錄,定時可以使用系統內置的Cron.中的方法,每天每分鐘每月等等,需要特殊的定時可以查詢Cron語法寫入即可

        比如我們這邊發布后訪問http://10.18.193.200:2800/Hangfire



        這里將代碼中的賬號密碼輸入即可訪問到儀表盤



        我們可以清楚的查看執行過的作業內容,并可以重新加入隊列中進行執行



        在周期性作業菜單中可以看到我們設置的每5分鐘執行一次的內容,包括立即執行、刪除、最后執行時間、下次執行時間等等



        在服務器中,可以看到運行的服務器信息,心跳等


         
        非常感謝您有耐心的讀完萬廣互聯的這篇文章:"Hangfire 分布式后端作業調度框架服務",僅為提供更多信息供用戶參考使用或為學習交流的方便。我們公司不僅提供:網站建設、網站制作、seo網站優化、網站推廣、小程序開發、商城開發、快速排名、網頁設計、建網站等服務,而且利用互聯網營銷手法,多平臺,多樣化進行品牌內容鋪設,營造企業正面形象,誠摯為您服務,歡迎您的到來。

        相關資訊

          暫無相關的資訊...
        COPYRIGHT ? 2009-2030 萬廣互聯 深圳網站建設 品牌網站建設. All rights reserved. 粵ICP備13078054號
        立即咨詢
        微信客服
        深圳萬廣互聯科技有限公司
        <li id="lnc9q"><tr id="lnc9q"><u id="lnc9q"></u></tr></li>
        <dd id="lnc9q"><big id="lnc9q"></big></dd>
        <dd id="lnc9q"><track id="lnc9q"></track></dd>
        <li id="lnc9q"><tr id="lnc9q"><kbd id="lnc9q"></kbd></tr></li>
        <rp id="lnc9q"></rp>
        1. <button id="lnc9q"><acronym id="lnc9q"><u id="lnc9q"></u></acronym></button>

          1. <span id="lnc9q"></span>

            <tbody id="lnc9q"><pre id="lnc9q"></pre></tbody>
            <button id="lnc9q"></button>
            99久久免费只有精品国产_色欲日日拍夜夜嗷嗷叫_美女裸体a级毛片_外国未满10周岁a片