• Abp Quartz配置Sqlite


    在ABP框架中使用Quartz做background  job

    具体引用什么包,可以参考Background Jobs Quartz | Documentation Center | ABP.IO

    由于读写不是那么多,就准备使用sqlite 作为数据库使用。

    更新下:在使用sqlite时遇到lock问题(比如登陆时)解决方案

    在ConfigureService中配置下:

    Configure(options =>
            {
                options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled;
            });

    配置的时候遇到了点问题

    由于采用的是上面链接介绍的第二种配置方式

    1. PreConfigure(options =>
    2. {
    3. options.Configurator = configure =>
    4. {
    5. configure.UsePersistentStore(storeOptions =>
    6. {
    7. storeOptions.UseProperties = true;
    8. storeOptions.UseJsonSerializer();
    9. storeOptions.UseSqlite(configuration.GetConnectionString("Quartz"));
    10. });
    11. };
    12. });

     结果发现有点问题。

    经过一番调试(查看quartz源码,和Windows日志事件发现是配置有问题)和翻看别人的配置

     storeOptions.UseSqlite(configuration.GetConnectionString("Quartz"));改成了

      storeOptions.UseMicrosoftSQLite(configuration.GetConnectionString("Quartz"));

    经过日志查看,UseSqlite需要引入System.Data.SQLite

    而我已经通过引入Volo.Abp.EntityFrameworkCore.Sqlite引入了

    Microsoft.EntityFrameworkCore.Sqlite

    数据库配置字符支持2中

    1. "ConnectionStrings": {
    2. "Quartz": "Filename=./xxxx.sqlite"
    3. },

    或者

    1. "ConnectionStrings": {
    2. "Quartz": "Data Source=./xxxx.sqlite"
    3. },

    或者

    1. "ConnectionStrings": {
    2. "Quartz": "Data Source=.\\xxx.sqlite"
    3. },

    重要的是,一定要在sqlite中先创建相关的表

    相关的sql代码在quartz.net 源码中,这里转载过来的。注意在有的工具里以下语句可能被被报错,那就换个工具,我是在sqlite studio里执行的。

    1. DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
    2. DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
    3. DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
    4. DROP TABLE IF EXISTS QRTZ_LOCKS;
    5. DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
    6. DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
    7. DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
    8. DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
    9. DROP TABLE IF EXISTS QRTZ_TRIGGERS;
    10. DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
    11. DROP TABLE IF EXISTS QRTZ_CALENDARS;
    12. CREATE TABLE QRTZ_JOB_DETAILS
    13. (
    14. SCHED_NAME NVARCHAR(120) NOT NULL,
    15. JOB_NAME NVARCHAR(150) NOT NULL,
    16. JOB_GROUP NVARCHAR(150) NOT NULL,
    17. DESCRIPTION NVARCHAR(250) NULL,
    18. JOB_CLASS_NAME NVARCHAR(250) NOT NULL,
    19. IS_DURABLE BIT NOT NULL,
    20. IS_NONCONCURRENT BIT NOT NULL,
    21. IS_UPDATE_DATA BIT NOT NULL,
    22. REQUESTS_RECOVERY BIT NOT NULL,
    23. JOB_DATA BLOB NULL,
    24. PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    25. );
    26. CREATE TABLE QRTZ_TRIGGERS
    27. (
    28. SCHED_NAME NVARCHAR(120) NOT NULL,
    29. TRIGGER_NAME NVARCHAR(150) NOT NULL,
    30. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    31. JOB_NAME NVARCHAR(150) NOT NULL,
    32. JOB_GROUP NVARCHAR(150) NOT NULL,
    33. DESCRIPTION NVARCHAR(250) NULL,
    34. NEXT_FIRE_TIME BIGINT NULL,
    35. PREV_FIRE_TIME BIGINT NULL,
    36. PRIORITY INTEGER NULL,
    37. TRIGGER_STATE NVARCHAR(16) NOT NULL,
    38. TRIGGER_TYPE NVARCHAR(8) NOT NULL,
    39. START_TIME BIGINT NOT NULL,
    40. END_TIME BIGINT NULL,
    41. CALENDAR_NAME NVARCHAR(200) NULL,
    42. MISFIRE_INSTR INTEGER NULL,
    43. JOB_DATA BLOB NULL,
    44. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    45. FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
    46. REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
    47. );
    48. CREATE TABLE QRTZ_SIMPLE_TRIGGERS
    49. (
    50. SCHED_NAME NVARCHAR(120) NOT NULL,
    51. TRIGGER_NAME NVARCHAR(150) NOT NULL,
    52. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    53. REPEAT_COUNT BIGINT NOT NULL,
    54. REPEAT_INTERVAL BIGINT NOT NULL,
    55. TIMES_TRIGGERED BIGINT NOT NULL,
    56. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    57. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    58. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) ON DELETE CASCADE
    59. );
    60. CREATE TRIGGER DELETE_SIMPLE_TRIGGER DELETE ON QRTZ_TRIGGERS
    61. BEGIN
    62. DELETE FROM QRTZ_SIMPLE_TRIGGERS WHERE SCHED_NAME=OLD.SCHED_NAME AND TRIGGER_NAME=OLD.TRIGGER_NAME AND TRIGGER_GROUP=OLD.TRIGGER_GROUP;
    63. END
    64. ;
    65. CREATE TABLE QRTZ_SIMPROP_TRIGGERS
    66. (
    67. SCHED_NAME NVARCHAR (120) NOT NULL ,
    68. TRIGGER_NAME NVARCHAR (150) NOT NULL ,
    69. TRIGGER_GROUP NVARCHAR (150) NOT NULL ,
    70. STR_PROP_1 NVARCHAR (512) NULL,
    71. STR_PROP_2 NVARCHAR (512) NULL,
    72. STR_PROP_3 NVARCHAR (512) NULL,
    73. INT_PROP_1 INT NULL,
    74. INT_PROP_2 INT NULL,
    75. LONG_PROP_1 BIGINT NULL,
    76. LONG_PROP_2 BIGINT NULL,
    77. DEC_PROP_1 NUMERIC NULL,
    78. DEC_PROP_2 NUMERIC NULL,
    79. BOOL_PROP_1 BIT NULL,
    80. BOOL_PROP_2 BIT NULL,
    81. TIME_ZONE_ID NVARCHAR(80) NULL,
    82. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    83. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    84. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) ON DELETE CASCADE
    85. );
    86. CREATE TRIGGER DELETE_SIMPROP_TRIGGER DELETE ON QRTZ_TRIGGERS
    87. BEGIN
    88. DELETE FROM QRTZ_SIMPROP_TRIGGERS WHERE SCHED_NAME=OLD.SCHED_NAME AND TRIGGER_NAME=OLD.TRIGGER_NAME AND TRIGGER_GROUP=OLD.TRIGGER_GROUP;
    89. END
    90. ;
    91. CREATE TABLE QRTZ_CRON_TRIGGERS
    92. (
    93. SCHED_NAME NVARCHAR(120) NOT NULL,
    94. TRIGGER_NAME NVARCHAR(150) NOT NULL,
    95. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    96. CRON_EXPRESSION NVARCHAR(250) NOT NULL,
    97. TIME_ZONE_ID NVARCHAR(80),
    98. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    99. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    100. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) ON DELETE CASCADE
    101. );
    102. CREATE TRIGGER DELETE_CRON_TRIGGER DELETE ON QRTZ_TRIGGERS
    103. BEGIN
    104. DELETE FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME=OLD.SCHED_NAME AND TRIGGER_NAME=OLD.TRIGGER_NAME AND TRIGGER_GROUP=OLD.TRIGGER_GROUP;
    105. END
    106. ;
    107. CREATE TABLE QRTZ_BLOB_TRIGGERS
    108. (
    109. SCHED_NAME NVARCHAR(120) NOT NULL,
    110. TRIGGER_NAME NVARCHAR(150) NOT NULL,
    111. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    112. BLOB_DATA BLOB NULL,
    113. PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    114. FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
    115. REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) ON DELETE CASCADE
    116. );
    117. CREATE TRIGGER DELETE_BLOB_TRIGGER DELETE ON QRTZ_TRIGGERS
    118. BEGIN
    119. DELETE FROM QRTZ_BLOB_TRIGGERS WHERE SCHED_NAME=OLD.SCHED_NAME AND TRIGGER_NAME=OLD.TRIGGER_NAME AND TRIGGER_GROUP=OLD.TRIGGER_GROUP;
    120. END
    121. ;
    122. CREATE TABLE QRTZ_CALENDARS
    123. (
    124. SCHED_NAME NVARCHAR(120) NOT NULL,
    125. CALENDAR_NAME NVARCHAR(200) NOT NULL,
    126. CALENDAR BLOB NOT NULL,
    127. PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
    128. );
    129. CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS
    130. (
    131. SCHED_NAME NVARCHAR(120) NOT NULL,
    132. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    133. PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
    134. );
    135. CREATE TABLE QRTZ_FIRED_TRIGGERS
    136. (
    137. SCHED_NAME NVARCHAR(120) NOT NULL,
    138. ENTRY_ID NVARCHAR(140) NOT NULL,
    139. TRIGGER_NAME NVARCHAR(150) NOT NULL,
    140. TRIGGER_GROUP NVARCHAR(150) NOT NULL,
    141. INSTANCE_NAME NVARCHAR(200) NOT NULL,
    142. FIRED_TIME BIGINT NOT NULL,
    143. SCHED_TIME BIGINT NOT NULL,
    144. PRIORITY INTEGER NOT NULL,
    145. STATE NVARCHAR(16) NOT NULL,
    146. JOB_NAME NVARCHAR(150) NULL,
    147. JOB_GROUP NVARCHAR(150) NULL,
    148. IS_NONCONCURRENT BIT NULL,
    149. REQUESTS_RECOVERY BIT NULL,
    150. PRIMARY KEY (SCHED_NAME,ENTRY_ID)
    151. );
    152. CREATE TABLE QRTZ_SCHEDULER_STATE
    153. (
    154. SCHED_NAME NVARCHAR(120) NOT NULL,
    155. INSTANCE_NAME NVARCHAR(200) NOT NULL,
    156. LAST_CHECKIN_TIME BIGINT NOT NULL,
    157. CHECKIN_INTERVAL BIGINT NOT NULL,
    158. PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
    159. );
    160. CREATE TABLE QRTZ_LOCKS
    161. (
    162. SCHED_NAME NVARCHAR(120) NOT NULL,
    163. LOCK_NAME NVARCHAR(40) NOT NULL,
    164. PRIMARY KEY (SCHED_NAME,LOCK_NAME)
    165. );

  • 相关阅读:
    22年牛客最新大厂Java岗面试题大合集(含答案)
    git命令大全(附使用步骤+注释)
    WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!
    htm与html的区别是什么
    java毕业设计采购系统mybatis+源码+调试部署+系统+数据库+lw
    harvard dataverse数据公开上传网站-数据库repository
    从旅游发展大会,看长沙的“落子”与“棋道”
    安装typescript环境并开启VSCode自动监视编译ts文件为js文件
    go语言并发编程
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcstof
  • 原文地址:https://blog.csdn.net/cynixway/article/details/126027834