Commit 88a47a80 by dingsongjie

添加 读取模块 模块

parent 4a976d46
......@@ -32,6 +32,7 @@
<PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="3.1.0" />
<PackageReference Include="Microsoft.Orleans.Server" Version="3.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" />
<PackageReference Include="OrleansDashboard" Version="3.0.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\src\Pole.Core\Pole.Core.csproj" />
......
......@@ -25,12 +25,14 @@ namespace Backet.Api
Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder =>
{
siloBuilder.ConfigureApplicationParts(parts => parts.AddFromApplicationBaseDirectory());
siloBuilder.UseLocalhostClustering();
siloBuilder.AddEfGrainStorage<BacketDbContext>("ef");
siloBuilder.Configure<GrainCollectionOptions>(options =>
{
options.CollectionAge = TimeSpan.FromMinutes(2);
});
siloBuilder.UseDashboard(options => { });
})
.ConfigureWebHostDefaults(webBuilder =>
{
......
......@@ -4,6 +4,7 @@ using Pole.Core.Channels;
using Pole.Core.EventBus;
using Pole.Core.Processor;
using Pole.Core.Processor.Server;
using Pole.Core.Query;
using Pole.Core.Serialization;
using Pole.Core.UnitOfWork;
using Pole.Core.Utils;
......@@ -31,10 +32,14 @@ namespace Microsoft.Extensions.DependencyInjection
services.AddSingleton<ISerializer, DefaultJsonSerializer>();
services.AddSingleton<IGeneratorIdSolver, InstanceIPV4_16IdGeneratorIdSolver>();
services.AddSingleton<IObserverUnitContainer, ObserverUnitContainer>();
services.AddSingleton<IQueryRegister, QueryRegister>();
using (var serviceProvider = services.BuildServiceProvider())
{
var generatorIdSolver = serviceProvider.GetService<IGeneratorIdSolver>();
services.AddSingleton(typeof(ISnowflakeIdGenerator), factory => new SnowflakeIdGenerator(new DateTime(2020, 1, 1), 16, generatorIdSolver.GetGeneratorId()));
var queryRegister = serviceProvider.GetService<IQueryRegister>();
queryRegister.Register(services, ServiceLifetime.Scoped);
}
services.AddSingleton<IProcessor, PendingMessageRetryProcessor>();
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Pole.Core.Query
{
public interface IQueries
{
}
}
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Pole.Core.Query
{
public interface IQueryRegister
{
Task Register(IServiceCollection serviceCollection, ServiceLifetime serviceLifetime);
}
}
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Pole.Core.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Pole.Core.Query
{
class QueryRegister : IQueryRegister
{
private readonly IServiceProvider serviceProvider;
public QueryRegister(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}
public Task Register(IServiceCollection serviceCollection, ServiceLifetime serviceLifetime)
{
foreach (var assembly in AssemblyHelper.GetAssemblies(serviceProvider.GetService<ILogger<QueryRegister>>()))
{
var implements = assembly.GetTypes().Where(m => typeof(IQueries).IsAssignableFrom(m) && m.IsClass && !m.IsAbstract);
foreach (var implement in implements)
{
var services = implement.GetInterfaces();
foreach (var queriesService in services)
{
if (serviceLifetime == ServiceLifetime.Scoped)
{
serviceCollection.AddScoped(queriesService, implement);
}
else if (serviceLifetime == ServiceLifetime.Singleton)
{
serviceCollection.AddSingleton(queriesService, implement);
}
else
{
serviceCollection.AddTransient(queriesService, implement);
}
}
}
}
return Task.CompletedTask;
}
}
}
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