Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
2 changes: 2 additions & 0 deletions src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}
5 changes: 4 additions & 1 deletion website/docs/guides/durable-retries.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down