예제 #1
0
        public InMemoryOutboxReceiveContext(OutboxContext outboxContext, ReceiveContext context)
            : base(context)
        {
            SendEndpointProvider = new InMemoryOutboxSendEndpointProvider(outboxContext, context.SendEndpointProvider);

            PublishEndpointProvider = new InMemoryOutboxPublishEndpointProvider(outboxContext, context.PublishEndpointProvider);
        }
예제 #2
0
        public void Configure(IApplicationBuilder app,
                              IWebHostEnvironment env,
                              AppUserContext appUserContext,
                              OutboxContext outboxContext,
                              ILogger <Startup> logger)
        {
            Log.Information($"Hosting enviroment = {env.EnvironmentName}");
            Log.Information($"RDS_ENDPOINT = {Environment.GetEnvironmentVariable("RDS_ENDPOINT")}");

            app.UseMiddleware <ErrorHandlerMiddleware>();
            if (env.IsDevelopment())
            {
                //app.UseDeveloperExceptionPage();
            }

            app.UseSwaggerLogon();
            app.UseAWS();
            app.UseSecurity();
            app.UseSerilogRequestLogging();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();

                endpoints.MapHealthChecks("/health/live", new HealthCheckOptions
                {
                    Predicate      = _ => true,
                    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
                });

                endpoints.MapHealthChecks("/health/ready", new HealthCheckOptions()
                {
                    Predicate      = reg => reg.Tags.Contains("ready"),
                    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
                });

                endpoints.Map("/", async(context) =>
                {
                    var result = JsonSerializer.Serialize(new
                    {
                        machineName = Environment.MachineName,
                        appName     = env.ApplicationName,
                        environment = env.EnvironmentName
                    });

                    context.Response.ContentType = Common.APPLICATION_JSON;
                    await context.Response.WriteAsync(result.ToString());
                });
            });

            Seed(appUserContext, outboxContext, logger);
        }
        public OutboxUnitOfWorkTests()
        {
            _conn = new SqliteConnection("Filename=:memory:");
            _conn.Open();
            var builder = new DbContextOptionsBuilder <OutboxContext>();

            builder.UseSqlite(_conn);
            var options = builder.Options;

            _ctx = new OutboxContext(options);
        }
예제 #4
0
        private void Seed(AppUserContext appUserContext, OutboxContext outboxContext, ILogger <Startup> logger)
        {
            // XRAY - EFCore - AsyncLocal Problems
            string traceId = TraceId.NewId();

            AWSXRayRecorder.Instance.BeginSegment("DB Migration", traceId);
            try
            {
                logger.LogInformation("Initializing AppUserContext Database Migration.");
                appUserContext.Database.Migrate();
                logger.LogInformation("Finishing AppUserContext Database Migration...");
                logger.LogInformation("Initializing OutboxContext Database Migration.");
                outboxContext.Database.Migrate();
                logger.LogInformation("Finishing OutboxContext Database Migration...");
            }
            catch (Exception)
            {
                AWSXRayRecorder.Instance.AddException(e);
            }
            finally
            {
                AWSXRayRecorder.Instance.EndSegment();
            }
        }
예제 #5
0
 public OutboxRepository(ILogger <OutboxRepository> logger, OutboxSettings settings, OutboxContext context)
 {
     Logger   = logger;
     Settings = settings;
     Context  = context;
 }
예제 #6
0
 /// <summary>
 /// Creates an send endpoint on the outbox
 /// </summary>
 /// <param name="outboxContext">The outbox context for this consume operation</param>
 /// <param name="endpoint">The actual endpoint returned by the transport</param>
 public OutboxSendEndpoint(OutboxContext outboxContext, ISendEndpoint endpoint)
 {
     _outboxContext = outboxContext;
     _endpoint      = endpoint;
 }
 public InMemoryOutboxPublishEndpointProvider(OutboxContext outboxContext, IPublishEndpointProvider publishEndpointProvider)
 {
     _outboxContext           = outboxContext;
     _publishEndpointProvider = publishEndpointProvider;
 }
 public OutboxPublishEndpoint(OutboxContext outboxContext, IPublishEndpoint publishEndpoint)
 {
     _outboxContext   = outboxContext;
     _publishEndpoint = publishEndpoint;
 }
예제 #9
0
 public OutboxStore(OutboxContext outboxContext)
 {
     _outboxContext = outboxContext;
 }
 public InMemoryOutboxSendEndpointProvider(OutboxContext outboxContext, ISendEndpointProvider sendEndpointProvider)
 {
     _outboxContext        = outboxContext;
     _sendEndpointProvider = sendEndpointProvider;
 }