From 221c13170e00b8078bb5bedb4e4bbfbb1ce0ae83 Mon Sep 17 00:00:00 2001 From: Mauricio Moccelin <25235995+mauriciomoccelin@users.noreply.github.com> Date: Thu, 21 Aug 2025 18:46:27 -0300 Subject: [PATCH 1/2] feat: include mongodb retry skip index creation parameter When this parameter is included, the application will ignore the creation of its indexes. This makes the behavior explicit for the developer using the library. --- .../MongoDbDataProviderFactory.cs | 7 ++++++- .../MongoDbSettings.cs | 2 ++ .../RetryDurableDefinitionBuilderExtension.cs | 19 +++++++++++++++++++ ...yDurableDefinitionBuilderExtensionTests.cs | 19 +++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs b/src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs index de05457b..e58cdca0 100644 --- a/src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs +++ b/src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs @@ -23,7 +23,12 @@ public DataProviderCreationResult TryCreate(MongoDbSettings mongoDbSettings) { var mongoClient = new MongoClient(mongoDbSettings.ConnectionString); var dbContext = new DbContext(mongoDbSettings, mongoClient); - DboConfigurations.TryAddIndexes(dbContext); + + if (!mongoDbSettings.SkipIndexCreation) + { + DboConfigurations.TryAddIndexes(dbContext); + } + return new DataProviderCreationResult( null, new RetryQueueDataProvider( diff --git a/src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs b/src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs index 3069fd28..5e883850 100644 --- a/src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs +++ b/src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs @@ -5,6 +5,8 @@ namespace KafkaFlow.Retry.MongoDb; [ExcludeFromCodeCoverage] public class MongoDbSettings { + public bool SkipIndexCreation { get; set; } + public string ConnectionString { get; set; } public string DatabaseName { get; set; } diff --git a/src/KafkaFlow.Retry.MongoDb/RetryDurableDefinitionBuilderExtension.cs b/src/KafkaFlow.Retry.MongoDb/RetryDurableDefinitionBuilderExtension.cs index b7928d35..7d1ed13a 100644 --- a/src/KafkaFlow.Retry.MongoDb/RetryDurableDefinitionBuilderExtension.cs +++ b/src/KafkaFlow.Retry.MongoDb/RetryDurableDefinitionBuilderExtension.cs @@ -8,11 +8,30 @@ public static RetryDurableDefinitionBuilder WithMongoDbDataProvider( string databaseName, string mongoDbretryQueueCollectionName, string mongoDbretryQueueItemCollectionName) + { + return WithMongoDbDataProvider( + retryDurableDefinitionBuilder, + connectionString, + databaseName, + mongoDbretryQueueCollectionName, + mongoDbretryQueueItemCollectionName, + mongoDbretrySkipIndexCreation: false + ); + } + + public static RetryDurableDefinitionBuilder WithMongoDbDataProvider( + this RetryDurableDefinitionBuilder retryDurableDefinitionBuilder, + string connectionString, + string databaseName, + string mongoDbretryQueueCollectionName, + string mongoDbretryQueueItemCollectionName, + bool mongoDbretrySkipIndexCreation) { var dataProviderCreation = new MongoDbDataProviderFactory() .TryCreate( new MongoDbSettings { + SkipIndexCreation = mongoDbretrySkipIndexCreation, ConnectionString = connectionString, DatabaseName = databaseName, RetryQueueCollectionName = mongoDbretryQueueCollectionName, diff --git a/tests/KafkaFlow.Retry.UnitTests/Repositories/MongoDb/RetryDurableDefinitionBuilderExtensionTests.cs b/tests/KafkaFlow.Retry.UnitTests/Repositories/MongoDb/RetryDurableDefinitionBuilderExtensionTests.cs index e1781d5e..8e06c9b6 100644 --- a/tests/KafkaFlow.Retry.UnitTests/Repositories/MongoDb/RetryDurableDefinitionBuilderExtensionTests.cs +++ b/tests/KafkaFlow.Retry.UnitTests/Repositories/MongoDb/RetryDurableDefinitionBuilderExtensionTests.cs @@ -40,4 +40,23 @@ public void RetryDurableDefinitionBuilder_WithMongoDbDataProvider_Success() result.Should().NotBeNull(); result.Should().BeOfType(typeof(RetryDurableDefinitionBuilder)); } + + [Fact] + public void RetryDurableDefinitionBuilder_WithMongoDbDataProviderAndSkipIndexCreation_Success() + { + // Arrange + var builder = new RetryDurableDefinitionBuilder(); + + // Act + var result = builder.WithMongoDbDataProvider( + "mongodb://localhost:27017/KafkaFlowRetry?maxPoolSize=1000", + "Test", + "RetryQueueCollectionName", + "RetryQueueItemCollectionName", + true + ); + + result.Should().NotBeNull(); + result.Should().BeOfType(typeof(RetryDurableDefinitionBuilder)); + } } \ No newline at end of file From c1d24631106079f01f491abc96707fe2a2c655c4 Mon Sep 17 00:00:00 2001 From: Mauricio Moccelin <25235995+mauriciomoccelin@users.noreply.github.com> Date: Fri, 22 Aug 2025 08:45:01 -0300 Subject: [PATCH 2/2] chore: improve retry with mongo documentation --- website/docs/guides/durable-retries.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/docs/guides/durable-retries.md b/website/docs/guides/durable-retries.md index 441d2274..5aa39131 100644 --- a/website/docs/guides/durable-retries.md +++ b/website/docs/guides/durable-retries.md @@ -132,13 +132,16 @@ On the configuration, define the access configuration to the MongoDb instance. connectionString, database, retryQueueCollectionName, - retryQueueItemCollectionName) + retryQueueItemCollectionName, + retrySkipIndexCreation) ... ) ... ) ``` +- `retrySkipIndexCreation`: When this parameter is included, the application will ignore the creation of its indexes. + ## How to use SQL Server as a Provider