From b43e87684e674dbed7a66d6ab02006c43eb0802a Mon Sep 17 00:00:00 2001
From: cKey <35512826+colinin@users.noreply.github.com>
Date: Thu, 30 Mar 2023 11:02:44 +0800
Subject: [PATCH] feat(tasks): change job group length
---
...025320_Modify-Job-Group-Length.Designer.cs | 273 ++++++++++++++++++
.../20230330025320_Modify-Job-Group-Length.cs | 68 +++++
...agementMigrationsDbContextModelSnapshot.cs | 8 +-
.../Internal/JobExecutedEvent.cs | 9 +-
.../TaskManagement/BackgroundJobInfoConsts.cs | 2 +-
...ksManagementHttpApiHostModule.Configure.cs | 4 +
6 files changed, 355 insertions(+), 9 deletions(-)
create mode 100644 aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.Designer.cs
create mode 100644 aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.cs
diff --git a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.Designer.cs b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.Designer.cs
new file mode 100644
index 000000000..21ad67044
--- /dev/null
+++ b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.Designer.cs
@@ -0,0 +1,273 @@
+//
+using System;
+using LY.MicroService.TaskManagement.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Volo.Abp.EntityFrameworkCore;
+
+#nullable disable
+
+namespace LY.MicroService.TaskManagement.EntityFrameworkCore.Migrations
+{
+ [DbContext(typeof(TaskManagementMigrationsDbContext))]
+ [Migration("20230330025320_Modify-Job-Group-Length")]
+ partial class ModifyJobGroupLength
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
+ .HasAnnotation("ProductVersion", "7.0.2")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("LINGYUN.Abp.TaskManagement.BackgroundJobAction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime(6)")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("char(36)")
+ .HasColumnName("CreatorId");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("longtext")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("IsEnabled")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("JobId")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("JobId");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime(6)")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("char(36)")
+ .HasColumnName("LastModifierId");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasColumnName("Name");
+
+ b.Property("Paramters")
+ .HasColumnType("longtext")
+ .HasColumnName("Paramters");
+
+ b.Property("TenantId")
+ .HasColumnType("char(36)")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Name");
+
+ b.ToTable("TK_BackgroundJobActions", (string)null);
+ });
+
+ modelBuilder.Entity("LINGYUN.Abp.TaskManagement.BackgroundJobInfo", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("varchar(255)");
+
+ b.Property("Args")
+ .HasColumnType("longtext")
+ .HasColumnName("Args");
+
+ b.Property("BeginTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnName("ConcurrencyStamp");
+
+ b.Property("CreationTime")
+ .HasColumnType("datetime(6)")
+ .HasColumnName("CreationTime");
+
+ b.Property("CreatorId")
+ .HasColumnType("char(36)")
+ .HasColumnName("CreatorId");
+
+ b.Property("Cron")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)")
+ .HasColumnName("Cron");
+
+ b.Property("Description")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("Description");
+
+ b.Property("EndTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ExtraProperties")
+ .HasColumnType("longtext")
+ .HasColumnName("ExtraProperties");
+
+ b.Property("Group")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasColumnName("Group");
+
+ b.Property("Interval")
+ .HasColumnType("int");
+
+ b.Property("IsAbandoned")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("IsEnabled")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("JobType")
+ .HasColumnType("int");
+
+ b.Property("LastModificationTime")
+ .HasColumnType("datetime(6)")
+ .HasColumnName("LastModificationTime");
+
+ b.Property("LastModifierId")
+ .HasColumnType("char(36)")
+ .HasColumnName("LastModifierId");
+
+ b.Property("LastRunTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LockTimeOut")
+ .HasColumnType("int");
+
+ b.Property("MaxCount")
+ .HasColumnType("int");
+
+ b.Property("MaxTryCount")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasColumnName("Name");
+
+ b.Property("NextRunTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("NodeName")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)")
+ .HasColumnName("NodeName");
+
+ b.Property("Priority")
+ .HasColumnType("int");
+
+ b.Property("Result")
+ .HasMaxLength(1000)
+ .HasColumnType("varchar(1000)")
+ .HasColumnName("Result");
+
+ b.Property("Source")
+ .HasColumnType("int");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.Property("TenantId")
+ .HasColumnType("char(36)")
+ .HasColumnName("TenantId");
+
+ b.Property("TriggerCount")
+ .HasColumnType("int");
+
+ b.Property("TryCount")
+ .HasColumnType("int");
+
+ b.Property("Type")
+ .IsRequired()
+ .HasMaxLength(1000)
+ .HasColumnType("varchar(1000)")
+ .HasColumnName("Type");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Name", "Group");
+
+ b.ToTable("TK_BackgroundJobs", (string)null);
+ });
+
+ modelBuilder.Entity("LINGYUN.Abp.TaskManagement.BackgroundJobLog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ b.Property("Exception")
+ .HasMaxLength(2000)
+ .HasColumnType("varchar(2000)")
+ .HasColumnName("Exception");
+
+ b.Property("JobGroup")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasColumnName("JobGroup");
+
+ b.Property("JobId")
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)")
+ .HasColumnName("JobId");
+
+ b.Property("JobName")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
+ .HasColumnName("JobName");
+
+ b.Property("JobType")
+ .HasMaxLength(1000)
+ .HasColumnType("varchar(1000)")
+ .HasColumnName("JobType");
+
+ b.Property("Message")
+ .HasMaxLength(1000)
+ .HasColumnType("varchar(1000)")
+ .HasColumnName("Message");
+
+ b.Property("RunTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("TenantId")
+ .HasColumnType("char(36)")
+ .HasColumnName("TenantId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("JobGroup", "JobName");
+
+ b.ToTable("TK_BackgroundJobLogs", (string)null);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.cs b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.cs
new file mode 100644
index 000000000..3f90321c5
--- /dev/null
+++ b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/20230330025320_Modify-Job-Group-Length.cs
@@ -0,0 +1,68 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace LY.MicroService.TaskManagement.EntityFrameworkCore.Migrations
+{
+ ///
+ public partial class ModifyJobGroupLength : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "Group",
+ table: "TK_BackgroundJobs",
+ type: "varchar(100)",
+ maxLength: 100,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(50)",
+ oldMaxLength: 50)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AlterColumn(
+ name: "JobGroup",
+ table: "TK_BackgroundJobLogs",
+ type: "varchar(100)",
+ maxLength: 100,
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "varchar(50)",
+ oldMaxLength: 50,
+ oldNullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "Group",
+ table: "TK_BackgroundJobs",
+ type: "varchar(50)",
+ maxLength: 50,
+ nullable: false,
+ oldClrType: typeof(string),
+ oldType: "varchar(100)",
+ oldMaxLength: 100)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AlterColumn(
+ name: "JobGroup",
+ table: "TK_BackgroundJobLogs",
+ type: "varchar(50)",
+ maxLength: 50,
+ nullable: true,
+ oldClrType: typeof(string),
+ oldType: "varchar(100)",
+ oldMaxLength: 100,
+ oldNullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4")
+ .OldAnnotation("MySql:CharSet", "utf8mb4");
+ }
+ }
+}
diff --git a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/TaskManagementMigrationsDbContextModelSnapshot.cs b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/TaskManagementMigrationsDbContextModelSnapshot.cs
index 9382db469..8044b091f 100644
--- a/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/TaskManagementMigrationsDbContextModelSnapshot.cs
+++ b/aspnet-core/migrations/LY.MicroService.TaskManagement.EntityFrameworkCore/Migrations/TaskManagementMigrationsDbContextModelSnapshot.cs
@@ -128,8 +128,8 @@ namespace LY.MicroService.TaskManagement.EntityFrameworkCore.Migrations
b.Property("Group")
.IsRequired()
- .HasMaxLength(50)
- .HasColumnType("varchar(50)")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
.HasColumnName("Group");
b.Property("Interval")
@@ -227,8 +227,8 @@ namespace LY.MicroService.TaskManagement.EntityFrameworkCore.Migrations
.HasColumnName("Exception");
b.Property("JobGroup")
- .HasMaxLength(50)
- .HasColumnType("varchar(50)")
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)")
.HasColumnName("JobGroup");
b.Property("JobId")
diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs
index 14dd63627..8e98915e5 100644
--- a/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs
+++ b/aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks/LINGYUN/Abp/BackgroundTasks/Internal/JobExecutedEvent.cs
@@ -34,7 +34,6 @@ public class JobExecutedEvent : JobEventBase, ITransientDepend
// 任务异常后可重试
if (context.EventData.Exception != null)
{
- job.TryCount += 1;
job.IsAbandoned = false;
job.Result = GetExceptionMessage(context.EventData.Exception);
@@ -70,8 +69,10 @@ public class JobExecutedEvent : JobEventBase, ITransientDepend
job.Status = JobStatus.Stopped;
job.IsAbandoned = true;
job.NextRunTime = null;
- await RemoveJobAsync(context, job, context.EventData.CancellationToken);
+ await RemoveJobQueueAsync(context, job, context.EventData.CancellationToken);
}
+
+ job.TryCount += 1;
}
else
{
@@ -97,7 +98,7 @@ public class JobExecutedEvent : JobEventBase, ITransientDepend
job.Status = JobStatus.Completed;
job.NextRunTime = null;
- await RemoveJobAsync(context, job, context.EventData.CancellationToken);
+ await RemoveJobQueueAsync(context, job, context.EventData.CancellationToken);
}
}
@@ -105,7 +106,7 @@ public class JobExecutedEvent : JobEventBase, ITransientDepend
}
}
- private async Task RemoveJobAsync(JobEventContext context, JobInfo jobInfo, CancellationToken cancellationToken = default)
+ private async Task RemoveJobQueueAsync(JobEventContext context, JobInfo jobInfo, CancellationToken cancellationToken = default)
{
var jobScheduler = context.ServiceProvider.GetRequiredService();
await jobScheduler.RemoveAsync(jobInfo, cancellationToken);
diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN/Abp/TaskManagement/BackgroundJobInfoConsts.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN/Abp/TaskManagement/BackgroundJobInfoConsts.cs
index 1d3ad97da..eb2b35cad 100644
--- a/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN/Abp/TaskManagement/BackgroundJobInfoConsts.cs
+++ b/aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain.Shared/LINGYUN/Abp/TaskManagement/BackgroundJobInfoConsts.cs
@@ -4,7 +4,7 @@ public static class BackgroundJobInfoConsts
{
public static int MaxCronLength { get; set; } = 50;
public static int MaxNameLength { get; set; } = 100;
- public static int MaxGroupLength { get; set; } = 50;
+ public static int MaxGroupLength { get; set; } = 100;
public static int MaxNodeNameLength { get; set; } = 128;
public static int MaxTypeLength { get; set; } = 1000;
public static int MaxDescriptionLength { get; set; } = 255;
diff --git a/aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.Configure.cs
index 57dabb683..04b779310 100644
--- a/aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.Configure.cs
+++ b/aspnet-core/services/LY.MicroService.WebhooksManagement.HttpApi.Host/WebhooksManagementHttpApiHostModule.Configure.cs
@@ -139,8 +139,12 @@ public partial class WebhooksManagementHttpApiHostModule
job =>
{
job.NodeName = ApplicationName;
+ // 需要间隔时长控制
+ job.Interval = 10;
job.MaxCount = webhooksOptions.MaxSendAttemptCount;
job.MaxTryCount = webhooksOptions.MaxSendAttemptCount;
+ // 需要锁定作业
+ job.LockTimeOut = webhooksOptions.TimeoutDuration.TotalSeconds.To();
});
//options.JobDispatcherSelectors.AddNamespace(
// "LINGYUN.Abp.Webhooks.BackgroundJobs",