1

複数のキューの構成と使用に問題があります。

これが私のスタートアップクラスの内容です:

var options = new DashboardOptions
        {
            AppPath = VirtualPathUtility.ToAbsolute("~")
        };
        app.UseHangfireDashboard("/jobs", options);

        var queues = new BackgroundJobServerOptions
        {
            Queues = new[] { "high", "normal" }
        };

        app.UseHangfireServer(queues);

サーバーは正しく起動し、ダッシュボードからキューを確認できます。

しかし、プロセスをエンキューしようとすると、hangfire は常にジョブをデフォルト キューに設定します。メソッドの呼び出しは次のとおりです。

BackgroundJob
 .Enqueue<IFileConverterService>(
  x => x.CreateSlides(docId, folderpath, priority));

これはメソッドの実装です:

public class FileConverterService : IFileConverterService
{
    [Queue("high")]
   public void CreateSlides(Guid documentId, string folderPath, int priority)
   {
       //my stuff
   }
}

私は何が欠けていますか?

4

1 に答える 1

2

私は問題を解決しました。

スタートアップ構成では、示されているようにデフォルトのキューを定義することが必須のようです

 var queues = new BackgroundJobServerOptions
            {
                Queues = new[] { "high", "default" }
            };

次に、Queue 属性を持つメソッドとそれを持たない別のメソッドを実装します。

    [Queue("high")]
    public void CreateSlidesWithHighPriority(Guid documentId, string folderPath, int priority)
    {
       //my code
    }

    public void CreateSlidesWithLowPriority(Guid documentId, string folderPath, int priority)
    {
        //my code
    }

これですべてが完全に機能します。

于 2015-09-11T08:54:42.540 に答える