diff --git a/samples/apis/Product.Api/Application/IntegrationEvent/ProductAddedIntegrationEvent.cs b/samples/apis/Product.Api/Application/IntegrationEvent/ProductAddedIntegrationEvent.cs new file mode 100644 index 0000000..5a9ec41 --- /dev/null +++ b/samples/apis/Product.Api/Application/IntegrationEvent/ProductAddedIntegrationEvent.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Product.Api.Application.IntergrationEvent +{ + public class ProductAddedIntegrationEvent + { + public string ProductName { get; set; } + public long Price { get; set; } + } +} diff --git a/samples/apis/Product.Api/Startup.cs b/samples/apis/Product.Api/Startup.cs index da48a48..2171936 100644 --- a/samples/apis/Product.Api/Startup.cs +++ b/samples/apis/Product.Api/Startup.cs @@ -48,25 +48,25 @@ namespace Product.Api option.AutoInjectionDependency(); option.AutoInjectionCommandHandlersAndDomainEventHandlers(); option.AddPoleEntityFrameworkCoreDomain(); - }); - services.AddPoleReliableMessage(option => - { - option.AddMasstransitRabbitmq(rabbitoption => - { - rabbitoption.RabbitMqHostAddress = Configuration["RabbitmqConfig:HostAddress"]; - rabbitoption.RabbitMqHostUserName = Configuration["RabbitmqConfig:HostUserName"]; - rabbitoption.RabbitMqHostPassword = Configuration["RabbitmqConfig:HostPassword"]; - rabbitoption.QueueNamePrefix = Configuration["ServiceName"]; - }); - option.AddMongodb(mongodbOption => + option.AddPoleReliableMessage(option => { - mongodbOption.ServiceCollectionName = Configuration["ServiceName"]; - mongodbOption.Servers = Configuration.GetSection("MongoConfig:Servers").Get(); + option.AddMasstransitRabbitmq(rabbitoption => + { + rabbitoption.RabbitMqHostAddress = Configuration["RabbitmqConfig:HostAddress"]; + rabbitoption.RabbitMqHostUserName = Configuration["RabbitmqConfig:HostUserName"]; + rabbitoption.RabbitMqHostPassword = Configuration["RabbitmqConfig:HostPassword"]; + rabbitoption.QueueNamePrefix = Configuration["ServiceName"]; + }); + option.AddMongodb(mongodbOption => + { + mongodbOption.ServiceCollectionName = Configuration["ServiceName"]; + mongodbOption.Servers = Configuration.GetSection("MongoConfig:Servers").Get(); + }); + option.AddEventAssemblies(typeof(Startup).Assembly) + .AddEventHandlerAssemblies(typeof(Startup).Assembly); + option.NetworkInterfaceGatewayAddress = Configuration["ReliableMessageOption:NetworkInterfaceGatewayAddress"]; }); - option.AddEventAssemblies(typeof(Startup).Assembly) - .AddEventHandlerAssemblies(typeof(Startup).Assembly); - option.NetworkInterfaceGatewayAddress = Configuration["ReliableMessageOption:NetworkInterfaceGatewayAddress"]; }); } diff --git a/src/Pole.Application/PoleOptionsExtensions.cs b/src/Pole.Application/PoleOptionsExtensions.cs index a6e5244..552658a 100644 --- a/src/Pole.Application/PoleOptionsExtensions.cs +++ b/src/Pole.Application/PoleOptionsExtensions.cs @@ -1,27 +1,25 @@ using MediatR; using Microsoft.Extensions.DependencyInjection; using Pole.Application; -using Pole.Application.Cqrs; using Pole.Application.MediatR; using Pole.Core.DependencyInjection; +using Pole.ReliableMessage; using System; -using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Text; namespace Microsoft.Extensions.DependencyInjection { public static class PoleOptionsExtensions { - public static PoleOptions AddManageredAssemblies(this PoleOptions options, params Assembly [] assemblies) + public static PoleOptions AddManageredAssemblies(this PoleOptions options, params Assembly[] assemblies) { options.ApplicationAssemblies = assemblies; return options; } public static PoleOptions AutoInjectionDependency(this PoleOptions options) { - var assemblies = options.ApplicationAssemblies??throw new Exception("Cant't find ApplicationAssemblies,You must Run PoleOptions.AddManageredAssemblies First"); + var assemblies = options.ApplicationAssemblies ?? throw new Exception("Cant't find ApplicationAssemblies,You must Run PoleOptions.AddManageredAssemblies First"); foreach (var assembly in assemblies) { @@ -36,19 +34,24 @@ namespace Microsoft.Extensions.DependencyInjection { var assemblies = options.ApplicationAssemblies ?? throw new Exception("Cant't find ApplicationAssemblies,You must Run PoleOptions.AddManageredAssemblies First"); options.Services.AddMediatR(config => - { + { config.AddServiceLifetime(lifetime); }, assemblies.ToArray()); return options; } - + public static PoleOptions AddPoleReliableMessage(this PoleOptions options, Action optionConfig) + { + options.Services.AddPoleReliableMessage(optionConfig); + return options; + } + #region Internal private static void AddScoped(PoleOptions options, Assembly assembly) { var implements = assembly.GetTypes().Where(m => typeof(IScopedDenpendency).IsAssignableFrom(m) && m.IsClass && !m.IsAbstract); foreach (var implement in implements) { var services = implement.GetInterfaces(); - foreach(var queriesService in services) + foreach (var queriesService in services) { options.Services.AddScoped(queriesService, implement); } @@ -80,5 +83,6 @@ namespace Microsoft.Extensions.DependencyInjection } } } + #endregion } }