Commit 88a47a80 by dingsongjie

添加 读取模块 模块

parent 4a976d46
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="3.1.0" /> <PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="3.1.0" />
<PackageReference Include="Microsoft.Orleans.Server" 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="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" />
<PackageReference Include="OrleansDashboard" Version="3.0.8" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\src\Pole.Core\Pole.Core.csproj" /> <ProjectReference Include="..\..\..\src\Pole.Core\Pole.Core.csproj" />
......
...@@ -25,12 +25,14 @@ namespace Backet.Api ...@@ -25,12 +25,14 @@ namespace Backet.Api
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)
.UseOrleans(siloBuilder => .UseOrleans(siloBuilder =>
{ {
siloBuilder.ConfigureApplicationParts(parts => parts.AddFromApplicationBaseDirectory());
siloBuilder.UseLocalhostClustering(); siloBuilder.UseLocalhostClustering();
siloBuilder.AddEfGrainStorage<BacketDbContext>("ef"); siloBuilder.AddEfGrainStorage<BacketDbContext>("ef");
siloBuilder.Configure<GrainCollectionOptions>(options => siloBuilder.Configure<GrainCollectionOptions>(options =>
{ {
options.CollectionAge = TimeSpan.FromMinutes(2); options.CollectionAge = TimeSpan.FromMinutes(2);
}); });
siloBuilder.UseDashboard(options => { });
}) })
.ConfigureWebHostDefaults(webBuilder => .ConfigureWebHostDefaults(webBuilder =>
{ {
......
...@@ -4,6 +4,7 @@ using Pole.Core.Channels; ...@@ -4,6 +4,7 @@ using Pole.Core.Channels;
using Pole.Core.EventBus; using Pole.Core.EventBus;
using Pole.Core.Processor; using Pole.Core.Processor;
using Pole.Core.Processor.Server; using Pole.Core.Processor.Server;
using Pole.Core.Query;
using Pole.Core.Serialization; using Pole.Core.Serialization;
using Pole.Core.UnitOfWork; using Pole.Core.UnitOfWork;
using Pole.Core.Utils; using Pole.Core.Utils;
...@@ -31,10 +32,14 @@ namespace Microsoft.Extensions.DependencyInjection ...@@ -31,10 +32,14 @@ namespace Microsoft.Extensions.DependencyInjection
services.AddSingleton<ISerializer, DefaultJsonSerializer>(); services.AddSingleton<ISerializer, DefaultJsonSerializer>();
services.AddSingleton<IGeneratorIdSolver, InstanceIPV4_16IdGeneratorIdSolver>(); services.AddSingleton<IGeneratorIdSolver, InstanceIPV4_16IdGeneratorIdSolver>();
services.AddSingleton<IObserverUnitContainer, ObserverUnitContainer>(); services.AddSingleton<IObserverUnitContainer, ObserverUnitContainer>();
services.AddSingleton<IQueryRegister, QueryRegister>();
using (var serviceProvider = services.BuildServiceProvider()) using (var serviceProvider = services.BuildServiceProvider())
{ {
var generatorIdSolver = serviceProvider.GetService<IGeneratorIdSolver>(); var generatorIdSolver = serviceProvider.GetService<IGeneratorIdSolver>();
services.AddSingleton(typeof(ISnowflakeIdGenerator), factory => new SnowflakeIdGenerator(new DateTime(2020, 1, 1), 16, generatorIdSolver.GetGeneratorId())); 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>(); 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