Commit 7b305c9c by dingsongjie

application 紧密集成 可靠消息

parent fe4ff39e
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; }
}
}
......@@ -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<MongoHost[]>();
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<MongoHost[]>();
});
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"];
});
}
......
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<ReliableMessageOption> 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
}
}
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