Commit 42cceee2 by dingsongjie

调整命名

parent 1fffdf16
...@@ -25,10 +25,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backet.Api", "samples\apis\ ...@@ -25,10 +25,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Backet.Api", "samples\apis\
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "User.Api", "samples\apis\User.Api\User.Api.csproj", "{F65858EC-C34F-4121-BEC5-4E20DEA74A0A}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "User.Api", "samples\apis\User.Api\User.Api.csproj", "{F65858EC-C34F-4121-BEC5-4E20DEA74A0A}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "integrationEvents", "integrationEvents", "{74422E64-29FE-4287-A86E-741D1DFF6698}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Product.IntegrationEvents", "samples\intergrationEvents\Product.IntegrationEvents\Product.IntegrationEvents.csproj", "{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.EventBus.Rabbitmq", "src\Pole.EventBus.Rabbitmq\Pole.EventBus.Rabbitmq.csproj", "{BDF62A19-FFBD-4EE1-A07A-68472E680A95}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.EventBus.Rabbitmq", "src\Pole.EventBus.Rabbitmq\Pole.EventBus.Rabbitmq.csproj", "{BDF62A19-FFBD-4EE1-A07A-68472E680A95}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Core.Test", "test\Pole.Core.Test\Pole.Core.Test.csproj", "{23EA8735-DB2E-4599-8902-8FCBCBE4799C}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Core.Test", "test\Pole.Core.Test\Pole.Core.Test.csproj", "{23EA8735-DB2E-4599-8902-8FCBCBE4799C}"
...@@ -39,11 +35,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Orleans.Provider.Entit ...@@ -39,11 +35,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Orleans.Provider.Entit
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Samples.Backet.Api", "test\Pole.Samples.Backet.Api\Pole.Samples.Backet.Api.csproj", "{FB3D2F52-123A-4606-B682-9159BD7913AE}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Samples.Backet.Api", "test\Pole.Samples.Backet.Api\Pole.Samples.Backet.Api.csproj", "{FB3D2F52-123A-4606-B682-9159BD7913AE}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pole.Sagas", "src\Pole.Sagas\Pole.Sagas.csproj", "{1F06D877-E4EC-4908-9057-38EDCE5E54E6}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Sagas", "src\Pole.Sagas\Pole.Sagas.csproj", "{1F06D877-E4EC-4908-9057-38EDCE5E54E6}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pole.Sagas.Storage.PostgreSql", "src\Pole.Sagas.Storage.PostgreSql\Pole.Sagas.Storage.PostgreSql.csproj", "{9505BDFC-395B-4257-AEB3-2B44611147A4}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pole.Sagas.Storage.PostgreSql", "src\Pole.Sagas.Storage.PostgreSql\Pole.Sagas.Storage.PostgreSql.csproj", "{9505BDFC-395B-4257-AEB3-2B44611147A4}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SagasTest.Api", "samples\apis\SagasTest.Api\SagasTest.Api.csproj", "{6138197E-6202-4E1B-9458-3CBEE60A36F9}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SagasTest.Api", "samples\apis\SagasTest.Api\SagasTest.Api.csproj", "{6138197E-6202-4E1B-9458-3CBEE60A36F9}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
...@@ -75,10 +71,6 @@ Global ...@@ -75,10 +71,6 @@ Global
{F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Debug|Any CPU.Build.0 = Debug|Any CPU {F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Release|Any CPU.Build.0 = Release|Any CPU {F65858EC-C34F-4121-BEC5-4E20DEA74A0A}.Release|Any CPU.Build.0 = Release|Any CPU
{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C}.Release|Any CPU.Build.0 = Release|Any CPU
{BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Debug|Any CPU.Build.0 = Debug|Any CPU {BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Release|Any CPU.ActiveCfg = Release|Any CPU {BDF62A19-FFBD-4EE1-A07A-68472E680A95}.Release|Any CPU.ActiveCfg = Release|Any CPU
...@@ -124,8 +116,6 @@ Global ...@@ -124,8 +116,6 @@ Global
{125B1E4B-B1C1-4F85-9C6A-38815960E654} = {475116FC-DEEC-4255-94E4-AE7B8C85038D} {125B1E4B-B1C1-4F85-9C6A-38815960E654} = {475116FC-DEEC-4255-94E4-AE7B8C85038D}
{C961F25C-1C11-4855-84E4-ADABE96451E7} = {475116FC-DEEC-4255-94E4-AE7B8C85038D} {C961F25C-1C11-4855-84E4-ADABE96451E7} = {475116FC-DEEC-4255-94E4-AE7B8C85038D}
{F65858EC-C34F-4121-BEC5-4E20DEA74A0A} = {475116FC-DEEC-4255-94E4-AE7B8C85038D} {F65858EC-C34F-4121-BEC5-4E20DEA74A0A} = {475116FC-DEEC-4255-94E4-AE7B8C85038D}
{74422E64-29FE-4287-A86E-741D1DFF6698} = {4A0FB696-EC29-4A5F-B40B-A6FC56001ADB}
{9C0DFC90-1AF9-424A-B5FB-2A7C3611970C} = {74422E64-29FE-4287-A86E-741D1DFF6698}
{BDF62A19-FFBD-4EE1-A07A-68472E680A95} = {9932C965-8B38-4F70-9E43-86DC56860E2B} {BDF62A19-FFBD-4EE1-A07A-68472E680A95} = {9932C965-8B38-4F70-9E43-86DC56860E2B}
{23EA8735-DB2E-4599-8902-8FCBCBE4799C} = {655E719B-4A3E-467C-A541-E0770AB81DE1} {23EA8735-DB2E-4599-8902-8FCBCBE4799C} = {655E719B-4A3E-467C-A541-E0770AB81DE1}
{548EFDBB-252F-48DD-87F4-58ABFBD4963C} = {9932C965-8B38-4F70-9E43-86DC56860E2B} {548EFDBB-252F-48DD-87F4-58ABFBD4963C} = {9932C965-8B38-4F70-9E43-86DC56860E2B}
......
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Product.IntegrationEvents
{
public class ProductAddedIntegrationEvent
{
public string BacketId { get; set; }
public string ProductId { get; set; }
public string ProductName { get; set; }
public long Price { get; set; }
}
}
syntax = "proto3";
package pole.Grpc.ExtraType;
message CommonCommandResponse {
// 1 成功 2 失败
int32 status = 1;
string message = 2;
}
\ No newline at end of file
syntax = "proto3";
package newArchitectureLab.apps.order;
service Order {
rpc GetById (GetByIdRequest) returns (GetByIdResponse);
}
message GetByIdRequest {
string id = 1;
}
message GetByIdResponse {
string id = 1;
double totalprice = 2;
repeated Product products = 3 ;
message Product {
string id = 1 ;
string name = 2 ;
double price = 3 ;
}
}
\ No newline at end of file
syntax = "proto3";
package newArchitectureLab.apps.product;
// The product service definition.
service Product {
rpc GetById (GetByIdRequest) returns (GetByIdResponse);
}
message GetByIdRequest {
string Id = 1;
}
message GetByIdResponse {
string id = 1;
string name = 2;
double price = 3;
int64 stock = 4;
string productTypeId = 5;
}
\ No newline at end of file
syntax = "proto3";
import "common/commonCommandResponse.proto";
package poleSample.apis.product;
// The greeting service definition.
service ProductType {
// Sends a greeting
rpc Add(AddProductTypeRequest) returns (pole.Grpc.ExtraType.CommonCommandResponse);
}
// The request message containing the user's name.
message AddProductTypeRequest {
string id = 1;
string name = 2;
}
...@@ -18,18 +18,18 @@ namespace Pole.Sagas.Core ...@@ -18,18 +18,18 @@ namespace Pole.Sagas.Core
private ISnowflakeIdGenerator snowflakeIdGenerator; private ISnowflakeIdGenerator snowflakeIdGenerator;
private IActivityFinder activityFinder; private IActivityFinder activityFinder;
private PoleSagasOption poleSagasOption; private PoleSagasOption poleSagasOption;
public int CurrentMaxOrder private int CurrentMaxOrder
{ {
get { return activities.Count; } get { return activities.Count; }
} }
/// <summary> /// <summary>
/// 如果 等于 -1 说明已经在执行补偿操作,此时这个值已经没有意义 /// 如果 等于 -1 说明已经在执行补偿操作,此时这个值已经没有意义
/// </summary> /// </summary>
private int _currentExecuteOrder = 0; private int currentExecuteOrder = 0;
/// <summary> /// <summary>
/// 如果 等于 -1 说明已经还未执行补偿操作,此时这个值没有意义 /// 如果 等于 -1 说明已经还未执行补偿操作,此时这个值没有意义
/// </summary> /// </summary>
private int _currentCompensateOrder = -1; private int currentCompensateOrder = -1;
private ISerializer serializer; private ISerializer serializer;
public string Id { get; } public string Id { get; }
...@@ -43,6 +43,18 @@ namespace Pole.Sagas.Core ...@@ -43,6 +43,18 @@ namespace Pole.Sagas.Core
this.activityFinder = activityFinder; this.activityFinder = activityFinder;
Id = snowflakeIdGenerator.NextId(); Id = snowflakeIdGenerator.NextId();
} }
internal Saga(ISnowflakeIdGenerator snowflakeIdGenerator, IServiceProvider serviceProvider, IEventSender eventSender, PoleSagasOption poleSagasOption, ISerializer serializer, IActivityFinder activityFinder,int currentExecuteOrder,int currentCompensateOrder)
{
this.snowflakeIdGenerator = snowflakeIdGenerator;
this.serviceProvider = serviceProvider;
this.eventSender = eventSender;
this.poleSagasOption = poleSagasOption;
this.serializer = serializer;
this.activityFinder = activityFinder;
Id = snowflakeIdGenerator.NextId();
this.currentExecuteOrder = currentExecuteOrder;
this.currentCompensateOrder = currentCompensateOrder;
}
public void AddActivity(string activityName, object data, int timeOutSeconds = 2) public void AddActivity(string activityName, object data, int timeOutSeconds = 2)
{ {
...@@ -84,22 +96,22 @@ namespace Pole.Sagas.Core ...@@ -84,22 +96,22 @@ namespace Pole.Sagas.Core
private ActivityWapper GetNextExecuteActivity() private ActivityWapper GetNextExecuteActivity()
{ {
if (_currentExecuteOrder == CurrentMaxOrder) if (currentExecuteOrder == CurrentMaxOrder)
{ {
return null; return null;
} }
_currentExecuteOrder++; currentExecuteOrder++;
return activities[_currentExecuteOrder - 1]; return activities[currentExecuteOrder - 1];
} }
private ActivityWapper GetNextCompensateActivity() private ActivityWapper GetNextCompensateActivity()
{ {
_currentCompensateOrder--; currentCompensateOrder--;
if (_currentCompensateOrder == 0) if (currentCompensateOrder == 0)
{ {
return null; return null;
} }
return activities[_currentCompensateOrder - 1]; return activities[currentCompensateOrder - 1];
} }
private async Task RecursiveCompensateActivity(ActivityWapper activityWapper) private async Task RecursiveCompensateActivity(ActivityWapper activityWapper)
{ {
...@@ -133,7 +145,7 @@ namespace Pole.Sagas.Core ...@@ -133,7 +145,7 @@ namespace Pole.Sagas.Core
if (!result.IsSuccess) if (!result.IsSuccess)
{ {
await eventSender.ActivityRevoked(activityId); await eventSender.ActivityRevoked(activityId);
await CompensateActivity(result,_currentExecuteOrder); await CompensateActivity(result,currentExecuteOrder);
return result; return result;
} }
await eventSender.ActivityEnded(activityId, string.Empty); await eventSender.ActivityEnded(activityId, string.Empty);
...@@ -159,7 +171,7 @@ namespace Pole.Sagas.Core ...@@ -159,7 +171,7 @@ namespace Pole.Sagas.Core
}; };
await eventSender.ActivityExecuteOvertime(activityId, Id, errors); await eventSender.ActivityExecuteOvertime(activityId, Id, errors);
// 超时的时候 需要首先补偿这个超时的操作 // 超时的时候 需要首先补偿这个超时的操作
return await CompensateActivity(result,_currentExecuteOrder+1); return await CompensateActivity(result,currentExecuteOrder+1);
} }
else else
{ {
...@@ -171,15 +183,15 @@ namespace Pole.Sagas.Core ...@@ -171,15 +183,15 @@ namespace Pole.Sagas.Core
}; };
await eventSender.ActivityExecuteAborted(activityId, errors); await eventSender.ActivityExecuteAborted(activityId, errors);
// 出错的时候 需要首先补偿这个出错的操作 // 出错的时候 需要首先补偿这个出错的操作
return await CompensateActivity(result, _currentExecuteOrder + 1); return await CompensateActivity(result, currentExecuteOrder + 1);
} }
} }
} }
private async Task<ActivityExecuteResult> CompensateActivity(ActivityExecuteResult result,int currentCompensateOrder) private async Task<ActivityExecuteResult> CompensateActivity(ActivityExecuteResult result,int currentCompensateOrder)
{ {
_currentCompensateOrder = currentCompensateOrder; this.currentCompensateOrder = currentCompensateOrder;
_currentExecuteOrder = -1; currentExecuteOrder = -1;
var compensateActivity = GetNextCompensateActivity(); var compensateActivity = GetNextCompensateActivity();
if (compensateActivity == null) if (compensateActivity == null)
{ {
......
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