diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs
index 3d6397ea4..ec217fa0f 100644
--- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs
+++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs
@@ -16,6 +16,7 @@ using Elsa.MongoDb.Extensions;
using Elsa.MongoDb.Modules.Identity;
using Elsa.MongoDb.Modules.Management;
using Elsa.MongoDb.Modules.Runtime;
+using MassTransit;
using Microsoft.Data.Sqlite;
using Microsoft.Extensions.Options;
using Proto.Persistence.Sqlite;
@@ -203,12 +204,26 @@ services
{
if (useMassTransitAzureServiceBus)
{
- massTransit.UseAzureServiceBus(azureServiceBusConnectionString, asb => asb.ConfigureServiceBus = bus => { bus.PrefetchCount = 4; });
+ massTransit.UseAzureServiceBus(azureServiceBusConnectionString, serviceBusFeature => serviceBusFeature.ConfigureServiceBus = bus =>
+ {
+ bus.PrefetchCount = 4;
+ bus.LockDuration = TimeSpan.FromMinutes(5);
+ bus.MaxConcurrentCalls = 32;
+ bus.MaxDeliveryCount = 8;
+ // etc.
+ });
}
if (useMassTransitRabbitMq)
{
- massTransit.UseRabbitMq(rabbitMqConnectionString, rabbit => rabbit.ConfigureServiceBus = bus => { bus.PrefetchCount = 4; });
+ massTransit.UseRabbitMq(rabbitMqConnectionString, rabbit => rabbit.ConfigureServiceBus = bus =>
+ {
+ bus.PrefetchCount = 4;
+ bus.Durable = true;
+ bus.AutoDelete = false;
+ bus.ConcurrentMessageLimit = 32;
+ // etc.
+ });
}
});
}
diff --git a/src/bundles/Elsa.WorkflowServer.Web/appsettings.json b/src/bundles/Elsa.WorkflowServer.Web/appsettings.json
index ce437e841..9859fc4f8 100644
--- a/src/bundles/Elsa.WorkflowServer.Web/appsettings.json
+++ b/src/bundles/Elsa.WorkflowServer.Web/appsettings.json
@@ -17,7 +17,7 @@
"Sqlite": "Data Source=App_Data/elsa.sqlite.db;Cache=Shared;",
"MongoDb": "mongodb://localhost:27017/elsa-workflows",
"AzureServiceBus": "",
- "RabbitMq": ""
+ "RabbitMq": "amqp://guest:guest@localhost:5672/elsa"
},
"Smtp": {
"Host": "localhost",
diff --git a/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs b/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs
index d09d9d62b..786c438d6 100644
--- a/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs
+++ b/src/modules/Elsa.MassTransit/Features/MassTransitWorkflowDispatcherFeature.cs
@@ -25,6 +25,11 @@ public class MassTransitWorkflowDispatcherFeature : FeatureBase
public MassTransitWorkflowDispatcherFeature(IModule module) : base(module)
{
}
+
+ ///
+ /// Configures the MassTransit workflow dispatcher.
+ ///
+ public Action? ConfigureDispatcherOptions { get; set; }
///
public override void Configure()
@@ -36,7 +41,10 @@ public class MassTransitWorkflowDispatcherFeature : FeatureBase
///
public override void Apply()
{
- Services.AddOptions();
+ var options = Services.AddOptions();
+
+ if (ConfigureDispatcherOptions != null)
+ options.Configure(ConfigureDispatcherOptions);
var queueName = KebabCaseEndpointNameFormatter.Instance.Consumer();
var queueAddress = new Uri($"queue:elsa-{queueName}");