private static OmegaBuilder AddOmegaCore([NotNull] this IServiceCollection services, Action <OmegaOptions> options, string servcie) { var builder = new OmegaBuilder(services); builder.AddHosting(options).AddDiagnostics().AddHttpClient(); return(builder); }
public static OmegaBuilder AddHosting(this OmegaBuilder builder, Action <OmegaOptions> options) { builder.Services.AddSingleton <IHostedService, OmegaHostedService>(); builder.Services.AddSingleton <IMessageSerializer, JsonMessageFormat>(); builder.Services.AddSingleton <IDiagnosticItercept, HostingDiagnosticIntercept>(); builder.Services.AddSingleton <ILoggerFactory, NullLoggerFactory>(); builder.Services.AddSingleton(typeof(IIdGenerator <string>), typeof(UniqueIdGenerator)); builder.Services.AddSingleton <IMessageHandler, CompensationMessageHandler>(); builder.Services.AddSingleton <IRecoveryPolicy, DefaultRecovery>(); builder.Services.AddSingleton <OmegaContext>(); builder.Services.AddSingleton <CompensationContext>(); builder.Services.AddSingleton <SagaStartAttribute>(); var option = new OmegaOptions(); options(option); builder.Services.AddSingleton <IMessageSender>(new GrpcClientMessageSender( new GrpcServiceConfig { InstanceId = option.InstanceId, ServiceName = option.ServiceName }, new Channel(option.GrpcServerAddress, ChannelCredentials.Insecure), new JsonMessageFormat(), option.GrpcServerAddress )); builder.Services.AddSingleton <IEventAwareInterceptor, SagaStartAnnotationProcessor>(); builder.Services.AddSingleton <IEventAwareInterceptor, CompensableInterceptor>(); builder.Services.AddSingleton <ISagaStartEventAwareInterceptor>(services => new SagaStartAnnotationProcessor(services.GetService <OmegaContext>(), services.GetService <IMessageSender>())); return(builder); }
public static OmegaBuilder AddHttpClient([NotNull] this OmegaBuilder builder) { builder.Services.AddSingleton <IDiagnosticItercept, HttpClientDiagnosticIntercept>(); return(builder); }
public static OmegaBuilder AddDiagnostics(this OmegaBuilder builder) { builder.Services.AddSingleton <DiagnosticListenerObserver>(); return(builder); }