配置¶

该包提供了GlobalConfiguration类的扩展方法。 使用任何你拥有的SQL Server的 连接字符串 或者连接名称。

  1. GlobalConfiguration.Configuration
  2. // Use connection string name defined in `web.config` or `app.config`
  3. .UseSqlServerStorage("db_connection")
  4. // Use custom connection string
  5. .UseSqlServerStorage(@"Server=.\sqlexpress; Database=Hangfire; Integrated Security=SSPI;");

安装数据库¶

Hangfire有这么几个表和索引来存储后台任务和相关的其他信息:
../_images/sql-schema.png
使用 SQL Server - 图2
一些表用于核心功能,其他表用于满足可扩展性需求(使得可以在不更改基础架构的情况下编写扩展)。不使用像存储过程、触发器等高级特性, 以保持尽量简单并兼容SQL Azure。

Install.sql 文件(位于NuGet包中的 tools 文件夹下) 将在 SqlServerStorage 的构造函数中 自动执行 到对应数据库。其中包括迁移脚本,因此可以无需您的干预,新版本的Hangfire对于数据库的变动将被无缝迁移。

如果要手动安装,或将其与现有迁移子系统进行集成,请修改SQL Server存储配置:

  1. var options = new SqlServerStorageOptions
  2. {
  3. PrepareSchemaIfNecessary = false
  4. };
  5.  
  6. GlobalConfiguration.Configuration.UseSqlServerStorage("<name or connection string>", options);

配置轮询间隔¶

SQL Server存储有一个主要的的缺点- 它使用轮询技术来获取新任务。您可以调整轮询间隔,但是较低的间隔可能会损害您的SQL Server,而较高的间隔会产生太多延迟,因此请小心。

请注意, 不支持基于毫秒的间隔,最低使用1秒间隔。

  1. var options = new SqlServerStorageOptions
  2. {
  3. QueuePollInterval = TimeSpan.FromSeconds(15) // Default value
  4. };
  5.  
  6. GlobalConfiguration.Configuration.UseSqlServerStorage("<name or connection string>", options);

如果您想删除轮询技术,请考虑使用MSMQ扩展或Redis存储实现。

原文:

http://hangfirezh.zhs.press/configuration/using-sql-server.html