From 348efa72432ed3845ed8c8ddadf3760d3e638875 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 29 Nov 2022 11:11:38 +0000 Subject: [PATCH 1/3] Subscription Config Updated --- .../TransactionProcessor.BusinessLogic.csproj | 4 +- .../TransactionProcessor.Client.csproj | 2 +- ...ansactionProcessor.IntegrationTests.csproj | 4 +- ...ansactionProcessor.ProjectionEngine.csproj | 4 +- ...ocessor.Reconciliation.DomainEvents.csproj | 2 +- ...onProcessor.ReconciliationAggregate.csproj | 2 +- ...onProcessor.Settlement.DomainEvents.csproj | 2 +- ...ctionProcessor.SettlementAggregates.csproj | 2 +- ...nProcessor.Transaction.DomainEvents.csproj | 2 +- ...ctionProcessor.TransactionAggregate.csproj | 2 +- ...ctionProcessor.Voucher.DomainEvents.csproj | 2 +- ...ansactionProcessor.VoucherAggregate.csproj | 2 +- .../DomainEventHandlerRegistry.cs | 8 +- TransactionProcessor/Extensions.cs | 200 ++++++++++-------- TransactionProcessor/Program.cs | 1 - TransactionProcessor/Startup.cs | 2 +- .../TransactionProcessor.csproj | 4 +- TransactionProcessor/appsettings.json | 46 ++-- 18 files changed, 160 insertions(+), 131 deletions(-) diff --git a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj index 81cc78b3..2fb9ebd2 100644 --- a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj +++ b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/TransactionProcessor.Client/TransactionProcessor.Client.csproj b/TransactionProcessor.Client/TransactionProcessor.Client.csproj index 268e79eb..4efb3c9b 100644 --- a/TransactionProcessor.Client/TransactionProcessor.Client.csproj +++ b/TransactionProcessor.Client/TransactionProcessor.Client.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj index ed853c6e..7b533468 100644 --- a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj +++ b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj @@ -7,7 +7,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj index 2104894b..b42b7e66 100644 --- a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj +++ b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj @@ -19,9 +19,9 @@ - + - + diff --git a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj index cfb67d0b..2443f167 100644 --- a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj +++ b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj @@ -5,6 +5,6 @@ - + diff --git a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj index c4b870d3..12eb2a99 100644 --- a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj +++ b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj index a79517b1..cc3e6e31 100644 --- a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj +++ b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj index 812a1786..32e4be8d 100644 --- a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj +++ b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj index 81e51f6c..82d229bf 100644 --- a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj +++ b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj index c0724ff1..8050dadd 100644 --- a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj +++ b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj index 1fdebce9..c594e270 100644 --- a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj +++ b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj @@ -7,6 +7,6 @@ - + diff --git a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj index ac497f12..9bf99ad2 100644 --- a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj +++ b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj @@ -8,7 +8,7 @@ - + diff --git a/TransactionProcessor/Bootstrapper/DomainEventHandlerRegistry.cs b/TransactionProcessor/Bootstrapper/DomainEventHandlerRegistry.cs index 79bfef1f..e5542097 100644 --- a/TransactionProcessor/Bootstrapper/DomainEventHandlerRegistry.cs +++ b/TransactionProcessor/Bootstrapper/DomainEventHandlerRegistry.cs @@ -44,7 +44,7 @@ public DomainEventHandlerRegistry() } //this.AddSingleton(eventHandlersConfiguration); - this.Use(eventHandlersConfiguration).Named("Concurrent"); + this.Use(eventHandlersConfiguration).Named("EventHandlerConfiguration"); section = Startup.Configuration.GetSection("AppSettings:EventHandlerConfigurationOrdered"); @@ -52,8 +52,8 @@ public DomainEventHandlerRegistry() { Startup.Configuration.GetSection("AppSettings:EventHandlerConfigurationOrdered").Bind(eventHandlersConfigurationOrdered); } - - this.Use(eventHandlersConfigurationOrdered).Named("Ordered"); + + this.Use(eventHandlersConfigurationOrdered).Named("EventHandlerConfigurationOrdered"); } this.AddSingleton>(container => type => @@ -75,7 +75,7 @@ public DomainEventHandlerRegistry() this.AddSingleton, MerchantBalanceProjection>(); this.AddSingleton, MerchantBalanceStateDispatcher>(); - this.For().Use().Named("Concurrent") + this.For().Use().Named("Main") .Ctor>().Is(eventHandlersConfiguration).Singleton(); this.For().Use().Named("Ordered") .Ctor>().Is(eventHandlersConfigurationOrdered).Singleton(); diff --git a/TransactionProcessor/Extensions.cs b/TransactionProcessor/Extensions.cs index 95d69f95..9be3673c 100644 --- a/TransactionProcessor/Extensions.cs +++ b/TransactionProcessor/Extensions.cs @@ -1,6 +1,7 @@ namespace TransactionProcessor { using System; + using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; @@ -56,37 +57,30 @@ public static IServiceCollection AddInSecureEventStoreClient(this IServiceCollec } }; - static Action concurrentLog = (tt, message) => Extensions.log(tt, "CONCURRENT", message); + static Action mainLog = (tt, message) => Extensions.log(tt, "MAIN", message); static Action orderedLog = (tt, message) => Extensions.log(tt, "ORDERED", message); public static void PreWarm(this IApplicationBuilder applicationBuilder) { Startup.LoadTypes(); - Boolean internalSubscriptionService = Boolean.Parse(ConfigurationReader.GetValue("InternalSubscriptionService")); - - if (internalSubscriptionService) { - IConfigurationSection subscriptionConfigSection = Startup.Configuration.GetSection("AppSettings:SubscriptionConfig"); - SubscriptionConfigRoot subscriptionConfigRoot = new SubscriptionConfigRoot(); - subscriptionConfigSection.Bind(subscriptionConfigRoot); + IConfigurationSection subscriptionConfigSection = Startup.Configuration.GetSection("AppSettings:SubscriptionConfiguration"); + SubscriptionWorkersRoot subscriptionWorkersRoot = new SubscriptionWorkersRoot(); + subscriptionConfigSection.Bind(subscriptionWorkersRoot); + if (subscriptionWorkersRoot.InternalSubscriptionService) { + String eventStoreConnectionString = ConfigurationReader.GetValue("EventStoreSettings", "ConnectionString"); - Int32 cacheDuration = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "InternalSubscriptionServiceCacheDuration")); - - ISubscriptionRepository subscriptionRepository = SubscriptionRepository.Create(eventStoreConnectionString, cacheDuration); + + ISubscriptionRepository subscriptionRepository = SubscriptionRepository.Create(eventStoreConnectionString, subscriptionWorkersRoot.InternalSubscriptionServiceCacheDuration); ((SubscriptionRepository)subscriptionRepository).Trace += (sender, s) => Extensions.log(TraceEventType.Information, "REPOSITORY", s); // init our SubscriptionRepository subscriptionRepository.PreWarm(CancellationToken.None).Wait(); - - if (subscriptionConfigRoot.Concurrent.IsEnabled) { - SubscriptionWorker concurrentSubscriptions = ConfigureConcurrentSubscriptions(subscriptionRepository, subscriptionConfigRoot.Concurrent); - concurrentSubscriptions.StartAsync(CancellationToken.None).Wait(); - } - - if (subscriptionConfigRoot.Ordered.IsEnabled) { - SubscriptionWorker orderedSubscriptions = ConfigureOrderedSubscriptions(subscriptionRepository, subscriptionConfigRoot.Ordered); - orderedSubscriptions.StartAsync(CancellationToken.None).Wait(); + + List workers = ConfigureSubscriptions(subscriptionRepository, subscriptionWorkersRoot); + foreach (SubscriptionWorker subscriptionWorker in workers) { + subscriptionWorker.StartAsync(CancellationToken.None).Wait(); } } @@ -97,78 +91,98 @@ public static void PreWarm(this IApplicationBuilder applicationBuilder) { } } - private static SubscriptionWorker ConfigureConcurrentSubscriptions(ISubscriptionRepository subscriptionRepository, SubscriptionConfig concurrent) { - IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Concurrent"); - - Int32 inflightMessages = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "InflightMessages")); - Int32 persistentSubscriptionPollingInSeconds = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "PersistentSubscriptionPollingInSeconds")); - - SubscriptionWorker concurrentSubscriptions = SubscriptionWorker.CreateConcurrentSubscriptionWorker(Startup.EventStoreClientSettings, eventHandlerResolver, subscriptionRepository, - inflightMessages, persistentSubscriptionPollingInSeconds); - - concurrentSubscriptions.Trace += (_, args) => Extensions.concurrentLog(TraceEventType.Information, args.Message); - concurrentSubscriptions.Warning += (_, args) => Extensions.concurrentLog(TraceEventType.Warning, args.Message); - concurrentSubscriptions.Error += (_, args) => Extensions.concurrentLog(TraceEventType.Error, args.Message); - - if (!String.IsNullOrEmpty(concurrent.Ignore)) - { - concurrentSubscriptions = concurrentSubscriptions.IgnoreSubscriptions(concurrent.Ignore); - } - - if (!String.IsNullOrEmpty(concurrent.Filter)) - { - //NOTE: Not overly happy with this design, but; - //the idea is if we supply a filter, this overrides ignore - concurrentSubscriptions = concurrentSubscriptions.FilterSubscriptions(concurrent.Filter); - //.IgnoreSubscriptions(null); - - } - - if (!String.IsNullOrEmpty(concurrent.StreamName)) - { - concurrentSubscriptions = concurrentSubscriptions.FilterByStreamName(concurrent.StreamName); + private static List ConfigureSubscriptions(ISubscriptionRepository subscriptionRepository, SubscriptionWorkersRoot configuration) { + List workers = new List(); + + foreach (SubscriptionWorkerConfig configurationSubscriptionWorker in configuration.SubscriptionWorkers) { + if (configurationSubscriptionWorker.Enabled == false) + continue; + + if (configurationSubscriptionWorker.IsOrdered) { + IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Ordered"); + SubscriptionWorker worker = SubscriptionWorker.CreateOrderedSubscriptionWorker(Startup.EventStoreClientSettings, + eventHandlerResolver, + subscriptionRepository, + configuration.PersistentSubscriptionPollingInSeconds); + worker.Trace += (_, + args) => Extensions.orderedLog(TraceEventType.Information, args.Message); + worker.Warning += (_, + args) => Extensions.orderedLog(TraceEventType.Warning, args.Message); + worker.Error += (_, + args) => Extensions.orderedLog(TraceEventType.Error, args.Message); + worker.SetIgnoreGroups(configurationSubscriptionWorker.IgnoreGroups); + worker.SetIgnoreStreams(configurationSubscriptionWorker.IgnoreStreams); + worker.SetIncludeGroups(configurationSubscriptionWorker.IncludeGroups); + worker.SetIncludeStreams(configurationSubscriptionWorker.IncludeStreams); + workers.Add(worker); + + } + else { + for (Int32 i = 0; i < configurationSubscriptionWorker.InstanceCount; i++) { + IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Main"); + SubscriptionWorker worker = SubscriptionWorker.CreateSubscriptionWorker(Startup.EventStoreClientSettings, + eventHandlerResolver, + subscriptionRepository, + configurationSubscriptionWorker.InflightMessages, + configuration.PersistentSubscriptionPollingInSeconds); + + worker.Trace += (_, + args) => Extensions.mainLog(TraceEventType.Information, args.Message); + worker.Warning += (_, + args) => Extensions.mainLog(TraceEventType.Warning, args.Message); + worker.Error += (_, + args) => Extensions.mainLog(TraceEventType.Error, args.Message); + + worker.SetIgnoreGroups(configurationSubscriptionWorker.IgnoreGroups); + worker.SetIgnoreStreams(configurationSubscriptionWorker.IgnoreStreams); + worker.SetIncludeGroups(configurationSubscriptionWorker.IncludeGroups); + worker.SetIncludeStreams(configurationSubscriptionWorker.IncludeStreams); + + workers.Add(worker); + } + } } - - return concurrentSubscriptions; + + return workers; } - private static SubscriptionWorker ConfigureOrderedSubscriptions(ISubscriptionRepository subscriptionRepository, SubscriptionConfig ordered) - { - IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Ordered"); + //private static SubscriptionWorker ConfigureOrderedSubscriptions(ISubscriptionRepository subscriptionRepository, SubscriptionConfig ordered) + //{ + // IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Ordered"); - Int32 persistentSubscriptionPollingInSeconds = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "PersistentSubscriptionPollingInSeconds")); + // Int32 persistentSubscriptionPollingInSeconds = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "PersistentSubscriptionPollingInSeconds")); - SubscriptionWorker orderedSubscriptions = - SubscriptionWorker.CreateOrderedSubscriptionWorker(Startup.EventStoreClientSettings, - eventHandlerResolver, - subscriptionRepository, - persistentSubscriptionPollingInSeconds); + // SubscriptionWorker orderedSubscriptions = + // SubscriptionWorker.CreateOrderedSubscriptionWorker(Startup.EventStoreClientSettings, + // eventHandlerResolver, + // subscriptionRepository, + // persistentSubscriptionPollingInSeconds); - orderedSubscriptions.Trace += (_, args) => Extensions.orderedLog(TraceEventType.Information, args.Message); - orderedSubscriptions.Warning += (_, args) => Extensions.orderedLog(TraceEventType.Warning, args.Message); - orderedSubscriptions.Error += (_, args) => Extensions.orderedLog(TraceEventType.Error, args.Message); + // orderedSubscriptions.Trace += (_, args) => Extensions.orderedLog(TraceEventType.Information, args.Message); + // orderedSubscriptions.Warning += (_, args) => Extensions.orderedLog(TraceEventType.Warning, args.Message); + // orderedSubscriptions.Error += (_, args) => Extensions.orderedLog(TraceEventType.Error, args.Message); - if (!String.IsNullOrEmpty(ordered.Ignore)) - { - orderedSubscriptions = orderedSubscriptions.IgnoreSubscriptions(ordered.Ignore); - } + // if (!String.IsNullOrEmpty(ordered.Ignore)) + // { + // orderedSubscriptions = orderedSubscriptions.IgnoreSubscriptions(ordered.Ignore); + // } - if (!String.IsNullOrEmpty(ordered.Filter)) - { - //NOTE: Not overly happy with this design, but; - //the idea is if we supply a filter, this overrides ignore - orderedSubscriptions = orderedSubscriptions.FilterSubscriptions(ordered.Filter) - .IgnoreSubscriptions(null); + // if (!String.IsNullOrEmpty(ordered.Filter)) + // { + // //NOTE: Not overly happy with this design, but; + // //the idea is if we supply a filter, this overrides ignore + // orderedSubscriptions = orderedSubscriptions.FilterSubscriptions(ordered.Filter) + // .IgnoreSubscriptions(null); - } + // } - if (!String.IsNullOrEmpty(ordered.StreamName)) - { - orderedSubscriptions = orderedSubscriptions.FilterByStreamName(ordered.StreamName); - } + // if (!String.IsNullOrEmpty(ordered.StreamName)) + // { + // orderedSubscriptions = orderedSubscriptions.FilterByStreamName(ordered.StreamName); + // } - return orderedSubscriptions; - } + // return orderedSubscriptions; + //} private static void OperatorLogon(String operatorId) { @@ -185,17 +199,25 @@ private static void OperatorLogon(String operatorId) } } } - - public class SubscriptionConfigRoot + + public class SubscriptionWorkersRoot { - public SubscriptionConfig Ordered { get; set; } - public SubscriptionConfig Concurrent { get; set; } + public Boolean InternalSubscriptionService { get; set; } + public Int32 PersistentSubscriptionPollingInSeconds { get; set; } + public Int32 InternalSubscriptionServiceCacheDuration { get; set; } + public List SubscriptionWorkers { get; set; } } - public class SubscriptionConfig{ - public Boolean IsEnabled { get; set; } - public String Filter { get; set; } - public String Ignore { get; set; } - public String StreamName { get; set; } + public class SubscriptionWorkerConfig + { + public String WorkerName { get; set; } + public String IncludeGroups { get; set; } + public String IgnoreGroups { get; set; } + public String IncludeStreams { get; set; } + public String IgnoreStreams { get; set; } + public Boolean Enabled { get; set; } + public Int32 InflightMessages { get; set; } + public Int32 InstanceCount { get; set; } + public Boolean IsOrdered { get; set; } } } \ No newline at end of file diff --git a/TransactionProcessor/Program.cs b/TransactionProcessor/Program.cs index d7a50111..52a0ec7c 100644 --- a/TransactionProcessor/Program.cs +++ b/TransactionProcessor/Program.cs @@ -19,7 +19,6 @@ namespace TransactionProcessor using Settlement.DomainEvents; using Shared.EventStore.Aggregate; using Shared.EventStore.EventHandling; - using Shared.EventStore.Subscriptions; using Shared.Logger; using Transaction.DomainEvents; diff --git a/TransactionProcessor/Startup.cs b/TransactionProcessor/Startup.cs index c1e0b7ac..2f64b466 100644 --- a/TransactionProcessor/Startup.cs +++ b/TransactionProcessor/Startup.cs @@ -130,7 +130,7 @@ public void Configure(IApplicationBuilder app, Logger.Initialise(logger); - Action loggerAction = message => { Logger.LogInformation(message); }; + Action loggerAction = Logger.LogInformation; Startup.Configuration.LogConfiguration(loggerAction); foreach (KeyValuePair type in TypeMap.Map) { diff --git a/TransactionProcessor/TransactionProcessor.csproj b/TransactionProcessor/TransactionProcessor.csproj index 69252045..89c0024f 100644 --- a/TransactionProcessor/TransactionProcessor.csproj +++ b/TransactionProcessor/TransactionProcessor.csproj @@ -35,8 +35,8 @@ - - + + diff --git a/TransactionProcessor/appsettings.json b/TransactionProcessor/appsettings.json index 70613eb1..e4f11069 100644 --- a/TransactionProcessor/appsettings.json +++ b/TransactionProcessor/appsettings.json @@ -1,22 +1,5 @@ { "AppSettings": { - "InternalSubscriptionServiceFilter": "Transaction Processor", - "SubscriptionConfig": { - "Ordered": { - "Filter": "Transaction Processor", - "Ignore": "", - "StreamName": "", - "IsEnabled": true - }, - "Concurrent": { - "Filter": "Transaction Processor", - "Ignore": "Ordered", - "StreamName": "", - //"InflightMessages": 1, - "IsEnabled": true - } - }, - "ClientId": "serviceClient", "ClientSecret": "d192cbc46d834d0da90e8a9d50ded543", //"SecurityService": "https://127.0.0.1:5001", @@ -60,7 +43,6 @@ "TransactionProcessor.ProjectionEngine.EventHandling.EventHandler,TransactionProcessor.ProjectionEngine" ] }, - "EventStateConfig": { "EstateCreatedEvent": "MerchantBalanceProjectionState", "MerchantCreatedEvent": "MerchantBalanceProjectionState", @@ -69,8 +51,34 @@ "TransactionHasStartedEvent": "MerchantBalanceProjectionState", "TransactionHasBeenCompletedEvent": "MerchantBalanceProjectionState", "MerchantFeeAddedToTransactionEvent": "MerchantBalanceProjectionState" + }, + "SubscriptionConfiguration": { + "InternalSubscriptionService": "true", + "PersistentSubscriptionPollingInSeconds": 480, + "InternalSubscriptionServiceCacheDuration": 120, + "SubscriptionWorkers": [ + { + "WorkerName": "Transaction Processor Main", + "IncludeGroups": "Transaction Processor Main", + "IgnoreGroups": "Ordered,local-", + "Enabled": true, + "InflightMessages": 100, + "IsOrdered": false, + "InstanceCount": 2, + "EventHandlerConfiguration": "EventHandlerConfiguration" + }, + { + "WorkerName": "Transaction Processor Projections", + "IncludeGroups": "Transaction Processor Ordered", + "IgnoreGroups": "local-", + "Enabled": true, + "InstanceCount": 1, + "IsOrdered": true, + "EventHandlerConfiguration": "EventHandlerConfigurationOrdered" + } + ] } - }, + }, "ConnectionStrings": { // SQL Server "TransactionProcessorReadModel": "server=192.168.1.133;user id=sa;password=Sc0tland;database=TransactionProcessorReadModel;Encrypt=false" From c466fbeaa26e794a477c38737c275c7580901915 Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 29 Nov 2022 11:36:30 +0000 Subject: [PATCH 2/3] Some updates --- TransactionProcessor/Extensions.cs | 38 --------------------------- TransactionProcessor/appsettings.json | 10 +++---- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/TransactionProcessor/Extensions.cs b/TransactionProcessor/Extensions.cs index 9be3673c..f870d897 100644 --- a/TransactionProcessor/Extensions.cs +++ b/TransactionProcessor/Extensions.cs @@ -146,44 +146,6 @@ private static List ConfigureSubscriptions(ISubscriptionRepo return workers; } - //private static SubscriptionWorker ConfigureOrderedSubscriptions(ISubscriptionRepository subscriptionRepository, SubscriptionConfig ordered) - //{ - // IDomainEventHandlerResolver eventHandlerResolver = Startup.Container.GetInstance("Ordered"); - - // Int32 persistentSubscriptionPollingInSeconds = Int32.Parse(ConfigurationReader.GetValue("AppSettings", "PersistentSubscriptionPollingInSeconds")); - - // SubscriptionWorker orderedSubscriptions = - // SubscriptionWorker.CreateOrderedSubscriptionWorker(Startup.EventStoreClientSettings, - // eventHandlerResolver, - // subscriptionRepository, - // persistentSubscriptionPollingInSeconds); - - // orderedSubscriptions.Trace += (_, args) => Extensions.orderedLog(TraceEventType.Information, args.Message); - // orderedSubscriptions.Warning += (_, args) => Extensions.orderedLog(TraceEventType.Warning, args.Message); - // orderedSubscriptions.Error += (_, args) => Extensions.orderedLog(TraceEventType.Error, args.Message); - - // if (!String.IsNullOrEmpty(ordered.Ignore)) - // { - // orderedSubscriptions = orderedSubscriptions.IgnoreSubscriptions(ordered.Ignore); - // } - - // if (!String.IsNullOrEmpty(ordered.Filter)) - // { - // //NOTE: Not overly happy with this design, but; - // //the idea is if we supply a filter, this overrides ignore - // orderedSubscriptions = orderedSubscriptions.FilterSubscriptions(ordered.Filter) - // .IgnoreSubscriptions(null); - - // } - - // if (!String.IsNullOrEmpty(ordered.StreamName)) - // { - // orderedSubscriptions = orderedSubscriptions.FilterByStreamName(ordered.StreamName); - // } - - // return orderedSubscriptions; - //} - private static void OperatorLogon(String operatorId) { try { diff --git a/TransactionProcessor/appsettings.json b/TransactionProcessor/appsettings.json index e4f11069..3a0699e9 100644 --- a/TransactionProcessor/appsettings.json +++ b/TransactionProcessor/appsettings.json @@ -59,22 +59,20 @@ "SubscriptionWorkers": [ { "WorkerName": "Transaction Processor Main", - "IncludeGroups": "Transaction Processor Main", + "IncludeGroups": "Transaction Processor", "IgnoreGroups": "Ordered,local-", "Enabled": true, "InflightMessages": 100, "IsOrdered": false, - "InstanceCount": 2, - "EventHandlerConfiguration": "EventHandlerConfiguration" + "InstanceCount": 2 }, { "WorkerName": "Transaction Processor Projections", - "IncludeGroups": "Transaction Processor Ordered", + "IncludeGroups": "Transaction Processor - Ordered", "IgnoreGroups": "local-", "Enabled": true, "InstanceCount": 1, - "IsOrdered": true, - "EventHandlerConfiguration": "EventHandlerConfigurationOrdered" + "IsOrdered": true } ] } From a9e18100dbe3c7acdab2fc2ca2f6096a9edf4ffa Mon Sep 17 00:00:00 2001 From: Stuart Ferguson Date: Tue, 29 Nov 2022 14:10:22 +0000 Subject: [PATCH 3/3] Fix docker based issue --- .../TransactionProcessor.BusinessLogic.csproj | 4 ++-- .../TransactionProcessor.Client.csproj | 2 +- .../TransactionProcessor.IntegrationTests.csproj | 4 ++-- .../TransactionProcessor.ProjectionEngine.csproj | 4 ++-- .../TransactionProcessor.Reconciliation.DomainEvents.csproj | 2 +- .../TransactionProcessor.ReconciliationAggregate.csproj | 2 +- .../TransactionProcessor.Settlement.DomainEvents.csproj | 2 +- .../TransactionProcessor.SettlementAggregates.csproj | 2 +- .../TransactionProcessor.Transaction.DomainEvents.csproj | 2 +- .../TransactionProcessor.TransactionAggregate.csproj | 2 +- .../TransactionProcessor.Voucher.DomainEvents.csproj | 2 +- .../TransactionProcessor.VoucherAggregate.csproj | 2 +- TransactionProcessor/TransactionProcessor.csproj | 4 ++-- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj index 2fb9ebd2..26fccc3e 100644 --- a/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj +++ b/TransactionProcessor.BusinessLogic/TransactionProcessor.BusinessLogic.csproj @@ -10,8 +10,8 @@ - - + + diff --git a/TransactionProcessor.Client/TransactionProcessor.Client.csproj b/TransactionProcessor.Client/TransactionProcessor.Client.csproj index 4efb3c9b..32ed2999 100644 --- a/TransactionProcessor.Client/TransactionProcessor.Client.csproj +++ b/TransactionProcessor.Client/TransactionProcessor.Client.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj index 7b533468..5d3a697e 100644 --- a/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj +++ b/TransactionProcessor.IntegrationTests/TransactionProcessor.IntegrationTests.csproj @@ -7,7 +7,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj index b42b7e66..2baf3e77 100644 --- a/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj +++ b/TransactionProcessor.ProjectionEngine/TransactionProcessor.ProjectionEngine.csproj @@ -19,9 +19,9 @@ - + - + diff --git a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj index 2443f167..73da5ea7 100644 --- a/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj +++ b/TransactionProcessor.Reconciliation.DomainEvents/TransactionProcessor.Reconciliation.DomainEvents.csproj @@ -5,6 +5,6 @@ - + diff --git a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj index 12eb2a99..a426a6cb 100644 --- a/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj +++ b/TransactionProcessor.ReconciliationAggregate/TransactionProcessor.ReconciliationAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj index cc3e6e31..8be74393 100644 --- a/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj +++ b/TransactionProcessor.Settlement.DomainEvents/TransactionProcessor.Settlement.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj index 32e4be8d..2955834e 100644 --- a/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj +++ b/TransactionProcessor.SettlementAggregates/TransactionProcessor.SettlementAggregates.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj index 82d229bf..a4484565 100644 --- a/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj +++ b/TransactionProcessor.Transaction.DomainEvents/TransactionProcessor.Transaction.DomainEvents.csproj @@ -5,7 +5,7 @@ - + diff --git a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj index 8050dadd..744b1489 100644 --- a/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj +++ b/TransactionProcessor.TransactionAgrgegate/TransactionProcessor.TransactionAggregate.csproj @@ -6,7 +6,7 @@ - + diff --git a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj index c594e270..a8b66816 100644 --- a/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj +++ b/TransactionProcessor.Voucher.DomainEvents/TransactionProcessor.Voucher.DomainEvents.csproj @@ -7,6 +7,6 @@ - + diff --git a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj index 9bf99ad2..3dced288 100644 --- a/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj +++ b/TransactionProcessor.VoucherAggregate/TransactionProcessor.VoucherAggregate.csproj @@ -8,7 +8,7 @@ - + diff --git a/TransactionProcessor/TransactionProcessor.csproj b/TransactionProcessor/TransactionProcessor.csproj index 89c0024f..94594502 100644 --- a/TransactionProcessor/TransactionProcessor.csproj +++ b/TransactionProcessor/TransactionProcessor.csproj @@ -35,8 +35,8 @@ - - + +