Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

丁松杰 / Pole

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Members
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Commit 4e4262ee authored 5 years ago by dingsongjie's avatar dingsongjie
Browse files
Options
  • Browse Files
  • Download
  • Email Patches
  • Plain Diff

优化 backgroundserver

parent 20631e55 master … v1.0.0
Show whitespace changes
Inline Side-by-side
Showing with 26 additions and 29 deletions
  • src/Pole.EventBus/Processor/Server/BackgroundServiceBasedProcessorServer.cs
  • src/Pole.Sagas.Client/SagasCompensateRetryBackgroundService.cs
  • src/Pole.Sagas.Server/Processor/BackgroundServiceBasedProcessorServer.cs
  • src/Pole.Sagas.Server/Services/SagaService.cs
  • src/Pole.Sagas.Storage.PostgreSql/ActivityAndSagaEntity.cs
  • src/Pole.Sagas.Storage.PostgreSql/PostgreSqlSagaStorage.cs
  • src/Pole.Sagas.Storage.PostgreSql/PostgreSqlSagaStorageInitializer.cs
  • src/Pole.Sagas/Core/ActivityEntity.cs
src/Pole.EventBus/Processor/Server/BackgroundServiceBasedProcessorServer.cs
View file @ 4e4262ee
......@@ -12,7 +12,7 @@ using System.Threading.Tasks;
namespace Pole.EventBus.Processor.Server
{
public class BackgroundServiceBasedProcessorServer : IHostedService
public class BackgroundServiceBasedProcessorServer : BackgroundService
{
private readonly IServiceProvider _serviceProvider;
private Task _compositeTask;
......@@ -22,12 +22,16 @@ namespace Pole.EventBus.Processor.Server
_serviceProvider = serviceProvider;
}
public async Task StartAsync(CancellationToken cancellationToken)
public override async Task StartAsync(CancellationToken cancellationToken)
{
var eventStorageInitializer = _serviceProvider.GetService<IEventStorageInitializer>();
await eventStorageInitializer.InitializeAsync(cancellationToken);
await base.StartAsync(cancellationToken);
}
ProcessingContext processingContext = new ProcessingContext(cancellationToken);
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
ProcessingContext processingContext = new ProcessingContext(stoppingToken);
List<LoopProcessor> loopProcessors = new List<LoopProcessor>();
var innerProcessors = _serviceProvider.GetServices<IProcessor>();
var loggerFactory = _serviceProvider.GetService<ILoggerFactory>();
......@@ -41,10 +45,5 @@ namespace Pole.EventBus.Processor.Server
_compositeTask = Task.WhenAll(tasks);
await _compositeTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
}
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Client/SagasCompensateRetryBackgroundService.cs
View file @ 4e4262ee
......@@ -71,7 +71,7 @@ namespace Pole.Sagas.Client
result.ActivityEntities = m.Activities.Select(n => new ActivityEntity
{
CompensateTimes = n.CompensateTimes,
ExecuteTimes = n.ExecuteTimes,
OvertimeCompensateTimes = n.ExecuteTimes,
Id = n.Id,
Name = n.Id,
Order = n.Order,
......
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Server/Processor/BackgroundServiceBasedProcessorServer.cs
View file @ 4e4262ee
......@@ -12,7 +12,7 @@ using System.Linq;
namespace Pole.Sagas.Server.Processor
{
public class BackgroundServiceBasedProcessorServer : IHostedService
public class BackgroundServiceBasedProcessorServer : BackgroundService
{
private readonly IServiceProvider _serviceProvider;
private Task _compositeTask;
......@@ -22,12 +22,15 @@ namespace Pole.Sagas.Server.Processor
_serviceProvider = serviceProvider;
}
public async Task StartAsync(CancellationToken cancellationToken)
public override async Task StartAsync(CancellationToken cancellationToken)
{
var eventStorageInitializer = _serviceProvider.GetService<ISagaStorageInitializer>();
await eventStorageInitializer.InitializeAsync(cancellationToken);
ProcessingContext processingContext = new ProcessingContext(cancellationToken);
await base.StartAsync(cancellationToken);
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
ProcessingContext processingContext = new ProcessingContext(stoppingToken);
List<LoopProcessor> loopProcessors = new List<LoopProcessor>();
var innerProcessors = _serviceProvider.GetServices<IProcessor>();
var loggerFactory = _serviceProvider.GetService<ILoggerFactory>();
......@@ -41,10 +44,5 @@ namespace Pole.Sagas.Server.Processor
_compositeTask = Task.WhenAll(tasks);
await _compositeTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}
}
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Server/Services/SagaService.cs
View file @ 4e4262ee
......@@ -154,7 +154,7 @@ namespace Pole.Sagas.Server.Services
result.Activities.Add(m.ActivityEntities.Select(n => new GetSagasResponse.Types.Saga.Types.Activity
{
CompensateTimes = n.CompensateTimes,
ExecuteTimes = n.ExecuteTimes,
ExecuteTimes = n.OvertimeCompensateTimes,
Id = n.Id,
Name = n.Id,
Order = n.Order,
......
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Storage.PostgreSql/ActivityAndSagaEntity.cs
View file @ 4e4262ee
......@@ -12,7 +12,7 @@ namespace Pole.Sagas.Storage.PostgreSql
public int Order { get; set; }
public string Status { get; set; }
public byte[] ParameterData { get; set; }
public int ExecuteTimes { get; set; }
public int OvertimeCompensateTimes { get; set; }
public int CompensateTimes { get; set; }
public int Name { get; set; }
}
......
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Storage.PostgreSql/PostgreSqlSagaStorage.cs
View file @ 4e4262ee
......@@ -169,9 +169,9 @@ $"INSERT INTO {sagaTableName} (\"Id\",\"ServiceName\",\"Status\",\"AddTime\")" +
{
using (var connection = new NpgsqlConnection(poleSagasStoragePostgreSqlOption.ConnectionString))
{
var updateActivitySql =
$"select limit_sagas.\"Id\" as SagaId,limit_sagas.\"ServiceName\",activities.\"Id\" as ActivityId,activities.\"Order\",activities.\"Status\",activities.\"ParameterData\",activities.\"ExecuteTimes\",activities.\"CompensateTimes\",activities.\"Name\" from \"Activities\" as activities inner join(select \"Id\",\"ServiceName\" from \"Sagas\" where \"AddTime\" <= @AddTime and \"Status\" = '{nameof(SagaStatus.Started)}' limit @Limit ) as limit_sagas on activities.\"SagaId\" = limit_sagas.\"Id\" and activities.\"Status\" != @Status1 and activities.\"Status\" != @Status2";
var activities = await connection.QueryAsync<ActivityAndSagaEntity>(updateActivitySql, new
var sql =
$"select limit_sagas.\"Id\" as SagaId,limit_sagas.\"ServiceName\",activities.\"Id\" as ActivityId,activities.\"Order\",activities.\"Status\",activities.\"ParameterData\",activities.\"OvertimeCompensateTimes\",activities.\"CompensateTimes\",activities.\"Name\" from {activityTableName} as activities inner join(select \"Id\",\"ServiceName\" from {sagaTableName} where \"AddTime\" <= @AddTime and \"Status\" = '{nameof(SagaStatus.Started)}' limit @Limit ) as limit_sagas on activities.\"SagaId\" = limit_sagas.\"Id\" and activities.\"Status\" != @Status1 and activities.\"Status\" != @Status2";
var activities = await connection.QueryAsync<ActivityAndSagaEntity>(sql, new
{
AddTime = dateTime,
Limit = limit,
......@@ -197,7 +197,7 @@ $"select limit_sagas.\"Id\" as SagaId,limit_sagas.\"ServiceName\",activities.\"I
ActivityEntity activityEntity = new ActivityEntity
{
CompensateTimes = activity.CompensateTimes,
ExecuteTimes = activity.ExecuteTimes,
OvertimeCompensateTimes = activity.OvertimeCompensateTimes,
Id = activity.Id,
Order = activity.Order,
ParameterData = activity.ParameterData,
......@@ -213,17 +213,18 @@ $"select limit_sagas.\"Id\" as SagaId,limit_sagas.\"ServiceName\",activities.\"I
}
}
public Task<int> DeleteExpiredData(string tableName, DateTime ExpiredAt, int batchCount)
public async Task<int> DeleteExpiredData(string tableName, DateTime ExpiredAt, int batchCount)
{
using (var connection = new NpgsqlConnection(poleSagasStoragePostgreSqlOption.ConnectionString))
{
var sql =
$"delete {tableName} WHERE \"ExpiresAt\" < @ExpiredAt AND \"Id\" IN (SELECT \"Id\" FROM {tableName} LIMIT @BatchCount);";
return connection.ExecuteAsync(sql, new
$"DELETE FROM {tableName} WHERE \"ExpiresAt\" < @ExpiredAt AND \"Id\" IN (SELECT \"Id\" FROM {tableName} LIMIT @BatchCount);";
var result = await connection.ExecuteAsync(sql, new
{
ExpiredAt = ExpiredAt,
BatchCount = batchCount,
});
return result;
}
}
......
This diff is collapsed. Click to expand it.
src/Pole.Sagas.Storage.PostgreSql/PostgreSqlSagaStorageInitializer.cs
View file @ 4e4262ee
......@@ -47,7 +47,6 @@ namespace Pole.Sagas.Storage.PostgreSql
private string CreateDbTablesScript(string schemaName)
{
var batchSql = $@"
111
CREATE SCHEMA IF NOT EXISTS ""{options.SchemaName}"";
CREATE TABLE IF NOT EXISTS {GetSagaTableName()}(
......
This diff is collapsed. Click to expand it.
src/Pole.Sagas/Core/ActivityEntity.cs
View file @ 4e4262ee
......@@ -15,7 +15,7 @@ namespace Pole.Sagas.Core
public Byte[] ParameterData { get; set; }
public Byte[] ResultData { get; set; }
public string Errors { get; set; }
public int ExecuteTimes { get; set; }
public int OvertimeCompensateTimes { get; set; }
public int CompensateTimes { get; set; }
public DateTime AddTime { get; set; }
}
......
This diff is collapsed. Click to expand it.
  • Write
  • Preview
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment