簡體   English   中英

Static LINQPad 中的 Hangfire RecurringJob 方法不正常

[英]Static Hangfire RecurringJob methods in LINQPad are not behaving

我在 LINQPad 中有一個如下所示的腳本:

var serverMode = EnvironmentType.EWPROD;
var jobToSchedule = JobType.ABC;
var hangfireCs = GetConnectionString(serverMode);
JobStorage.Current = new SqlServerStorage(hangfireCs);

Action<string, string, XElement> createOrReplaceJob =
    (jobName, cronExpression, inputPackage) =>
    {
        RecurringJob.RemoveIfExists(jobName);
        RecurringJob.AddOrUpdate(
            jobName,
             () => new BTR.Evolution.Hangfire.Schedulers.JobInvoker().Invoke(
                     jobName,
                     inputPackage,
                     null,
                     JobCancellationToken.Null),
            cronExpression, TimeZoneInfo.Local);
    };

// psuedo code to prepare inputPackage for client ABC...

createOrReplaceJob("ABC.CustomReport.SurveyResults", "0 2 * * *", inputPackage);

JobStorage.Current.GetConnection().GetRecurringJobs().Where( j => j.Id.StartsWith( jobToSchedule.ToString() ) ).Dump( "Scheduled Jobs" );

我必須同時安排 QA 和 PROD。 為此,我切換serverMode變量並為EWQA運行一次,為EWPROD運行一次。 直到最近,這一切都運行良好,不幸的是,我不確切知道它是什么時候發生變化的,因為我不必總是在兩種環境中運行。

我兩天前確實購買/安裝了 LINQPad 7,以查看一些 C# 10 功能,但我不確定這是否會影響它。

但這是問題/流程:

  1. EWQA運行它,一切正常。
  2. EWPROD運行它,腳本(Hangfire 組件)似乎在 QA 和 PROD 的混合體中運行。

當我在EWPROD中“第二次”運行它時,我已經確認:

  1. hangfireCs (連接字符串)是正確的(指向PROD),它被分配給JobStorage.Current
  2. 腳本末尾的查詢JobStorage.Current.GetConnection().GetRecurringJobs()使用正確的連接。
  3. createOrReplaceJob操作中的RecurringJob.*方法使用上一次運行的連接(即EWQA )。 如果我監控我的 QA Hangfire 數據庫,我會看到刪除和添加的作業。

臨時解決方法:

  1. EWQA運行它,一切正常。
  2. 重新啟動 LINQPad 或使用“取消並重置所有查詢”方法
  3. EWPROD運行它,現在一切正常。

所以我不知道問題出在哪里。 我覺得我的 LINQPad7 升級/安裝可能會導致問題,但我不確定是否有其他方法可以使RecurringJob.* static 方法使用“更新的”連接字符串。

關於為什么現在需要重新啟動或重置的任何想法?

LINQPad - 5.44.02 Hangfire.Core - 1.7.17 Hangfire.SqlServer - 1.7.17

這是由您的腳本(或您調用的庫)靜態緩存某些內容而不是在執行之間進行清理引起的。

完成后清除/處置對象(例如,JobStorage.Current?),或者通過添加Util.NewProcess=true; 到你的腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM