@@ -18,7 +18,6 @@ public static void AddApplicationServices(this IHostApplicationBuilder builder)
18
18
builder . Services . AddProblemDetails ( ) ;
19
19
20
20
builder . AddDefaultAuthentication ( ) ;
21
- builder . AddMongoDBClient ( ServiceName . Database . Rating ) ;
22
21
builder . Services . AddMediatR ( cfg =>
23
22
{
24
23
cfg . RegisterServicesFromAssemblyContaining < global ::Program > ( ) ;
@@ -27,9 +26,25 @@ public static void AddApplicationServices(this IHostApplicationBuilder builder)
27
26
cfg . AddOpenBehavior ( typeof ( MetricsBehavior < , > ) ) ;
28
27
} ) ;
29
28
29
+ var conn = builder . Configuration . GetConnectionString ( ServiceName . Database . Rating ) ;
30
+
31
+ builder . Services . AddSingleton < IMongoClient > ( _ => new MongoClient ( conn ) ) ;
32
+
33
+ builder . Services . AddSingleton ( provider =>
34
+ provider . GetService < IMongoClient > ( ) ! . GetDatabase ( MongoUrl . Create ( conn ) . DatabaseName ) ) ;
35
+
36
+ builder . Services . AddScoped ( provider =>
37
+ provider . GetService < IMongoDatabase > ( ) ! . GetCollection < Feedback > ( nameof ( Feedback ) ) ) ;
38
+
30
39
builder . AddRabbitMqEventBus ( typeof ( global ::Program ) , cfg =>
31
40
{
32
- cfg . AddInMemoryInboxOutbox ( ) ;
41
+ cfg . AddMongoDbOutbox ( o =>
42
+ {
43
+ o . DisableInboxCleanupService ( ) ;
44
+ o . ClientFactory ( provider => provider . GetRequiredService < IMongoClient > ( ) ) ;
45
+ o . DatabaseFactory ( provider => provider . GetRequiredService < IMongoDatabase > ( ) ) ;
46
+ o . UseBusOutbox ( bo => bo . DisableDeliveryService ( ) ) ;
47
+ } ) ;
33
48
} ) ;
34
49
35
50
builder . Services . AddValidatorsFromAssemblyContaining < global ::Program > ( includeInternalTypes : true ) ;
@@ -38,19 +53,6 @@ public static void AddApplicationServices(this IHostApplicationBuilder builder)
38
53
builder . Services . AddSingleton < CommandHandlerMetrics > ( ) ;
39
54
builder . Services . AddSingleton < QueryHandlerMetrics > ( ) ;
40
55
41
- builder . Services . AddSingleton ( serviceProvider =>
42
- {
43
- var url = builder . Configuration . GetConnectionString ( ServiceName . Database . Rating ) ;
44
- var client = serviceProvider . GetService < IMongoClient > ( ) ;
45
- return client ! . GetDatabase ( MongoUrl . Create ( url ) . DatabaseName ) ;
46
- } ) ;
47
-
48
- builder . Services . AddScoped ( serviceProvider =>
49
- {
50
- var database = serviceProvider . GetService < IMongoDatabase > ( ) ;
51
- return database ! . GetCollection < Feedback > ( nameof ( Feedback ) ) ;
52
- } ) ;
53
-
54
56
builder . Services . AddScoped < IRatingRepository , RatingRepository > ( ) ;
55
57
56
58
builder . AddVersioning ( ) ;
0 commit comments