diff --git a/src/bundles/Elsa.ServerAndStudio.Web/Program.cs b/src/bundles/Elsa.ServerAndStudio.Web/Program.cs
index 551738b52..f074e0156 100644
--- a/src/bundles/Elsa.ServerAndStudio.Web/Program.cs
+++ b/src/bundles/Elsa.ServerAndStudio.Web/Program.cs
@@ -38,7 +38,7 @@ services
identity.UseConfigurationBasedRoleProvider(options => identitySection.Bind(options));
})
.UseDefaultAuthentication()
- .UseInstanceManagement(x => x.HeartbeatSettings = settings => heartbeatSection.Bind(settings));
+ .UseInstanceManagement(x => x.HeartbeatOptions = settings => heartbeatSection.Bind(settings))
.UseWorkflowManagement(management => management.UseEntityFrameworkCore(ef => ef.UseSqlite(sqliteConnectionString)))
.UseWorkflowRuntime(runtime =>
{
diff --git a/src/bundles/Elsa.ServerAndStudio.Web/appsettings.json b/src/bundles/Elsa.ServerAndStudio.Web/appsettings.json
index 74c4f0025..df51caa3d 100644
--- a/src/bundles/Elsa.ServerAndStudio.Web/appsettings.json
+++ b/src/bundles/Elsa.ServerAndStudio.Web/appsettings.json
@@ -63,10 +63,10 @@
},
"Heartbeat": {
"InstanceHeartbeatRhythm": "00:00:01:00",
- "InstanceDeactivatedPeriod": "00:00:05:00",
+ "HeartbeatTimeoutPeriod": "00:00:05:00",
},
"MassTransit": {
- "ShortTermQueueLifetime": "00:00:05:00"
+ "TemporaryQueueTtl": "00:00:05:00"
},
"Smtp": {
"Host": "localhost",
diff --git a/src/modules/Elsa.Hosting.Management/Contracts/IApplicationInstanceNameProvider.cs b/src/modules/Elsa.Hosting.Management/Contracts/IApplicationInstanceNameProvider.cs
new file mode 100644
index 000000000..fce553b02
--- /dev/null
+++ b/src/modules/Elsa.Hosting.Management/Contracts/IApplicationInstanceNameProvider.cs
@@ -0,0 +1,12 @@
+namespace Elsa.Hosting.Management.Contracts;
+
+///
+/// Provides a name of the current application instance.
+///
+public interface IApplicationInstanceNameProvider
+{
+ ///
+ /// Returns a name for the instance.
+ ///
+ public string GetName();
+}
\ No newline at end of file
diff --git a/src/modules/Elsa.Hosting.Management/Features/InstanceManagementFeature.cs b/src/modules/Elsa.Hosting.Management/Features/InstanceManagementFeature.cs
index 71a5db555..accad358c 100644
--- a/src/modules/Elsa.Hosting.Management/Features/InstanceManagementFeature.cs
+++ b/src/modules/Elsa.Hosting.Management/Features/InstanceManagementFeature.cs
@@ -1,7 +1,9 @@
using Elsa.Features.Abstractions;
using Elsa.Features.Services;
+using Elsa.Hosting.Management.Contracts;
using Elsa.Hosting.Management.HostedServices;
using Elsa.Hosting.Management.Options;
+using Elsa.Hosting.Management.Services;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Hosting.Management.Features;
@@ -15,17 +17,29 @@ public class InstanceManagementFeature : FeatureBase
public InstanceManagementFeature(IModule module) : base(module)
{
}
-
- public Action HeartbeatSettings { get; set; } = _ => { };
+ ///
+ /// A factory that instantiates an .
+ ///
+ public Func InstanceNameProvider { get; set; } = sp =>
+ ActivatorUtilities.CreateInstance(sp);
+
+ ///
+ /// Represents the options for heartbeat feature.
+ ///
+ public Action HeartbeatOptions { get; set; } = _ => { };
+
+ ///
public override void ConfigureHostedServices()
{
Module.ConfigureHostedService();
Module.ConfigureHostedService();
}
+ ///
public override void Apply()
{
- Services.Configure(HeartbeatSettings);
+ Services.Configure(HeartbeatOptions)
+ .AddSingleton(InstanceNameProvider);
}
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatMonitorService.cs b/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatMonitorService.cs
index e8635df70..ff5971042 100644
--- a/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatMonitorService.cs
+++ b/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatMonitorService.cs
@@ -6,6 +6,7 @@ using Elsa.Workflows.Runtime.Models;
using Medallion.Threading;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Internal;
using Microsoft.Extensions.Options;
namespace Elsa.Hosting.Management.HostedServices;
@@ -16,21 +17,24 @@ namespace Elsa.Hosting.Management.HostedServices;
public class InstanceHeartbeatMonitorService : IHostedService, IDisposable
{
private readonly IServiceProvider _serviceProvider;
- private readonly HeartbeatSettings _heartbeatSettings;
+ private readonly ISystemClock _systemClock;
+ private readonly HeartbeatOptions _heartbeatOptions;
private Timer? _timer;
///
- /// Creates a new instance of the
+ /// Creates a new instance of the
///
- public InstanceHeartbeatMonitorService(IServiceProvider serviceProvider, IOptions heartbeatSettings)
+ public InstanceHeartbeatMonitorService(IServiceProvider serviceProvider, ISystemClock systemClock,
+ IOptions heartbeatOptions)
{
_serviceProvider = serviceProvider;
- _heartbeatSettings = heartbeatSettings.Value;
+ _systemClock = systemClock;
+ _heartbeatOptions = heartbeatOptions.Value;
}
-
+
public Task StartAsync(CancellationToken cancellationToken)
{
- _timer = new Timer(MonitorHeartbeats, null, TimeSpan.Zero, _heartbeatSettings.InstanceHeartbeatRhythm);
+ _timer = new Timer(MonitorHeartbeats, null, TimeSpan.Zero, _heartbeatOptions.InstanceHeartbeatRhythm);
return Task.CompletedTask;
}
@@ -49,32 +53,36 @@ public class InstanceHeartbeatMonitorService : IHostedService, IDisposable
{
_ = Task.Run(async () => await MonitorHeartbeatsAsync());
}
-
+
private async Task MonitorHeartbeatsAsync()
{
using var scope = _serviceProvider.CreateScope();
-
+
var lockProvider = scope.ServiceProvider.GetRequiredService();
var store = scope.ServiceProvider.GetRequiredService();
var notificationSender = scope.ServiceProvider.GetRequiredService();
-
+
var lockKey = "InstanceHeartbeatMonitorService";
await using var monitorLock = await lockProvider.TryAcquireLockAsync(lockKey, TimeSpan.Zero);
if (monitorLock == null)
return;
-
- var filter = new KeyValueFilter { StartsWith = true, Key = InstanceHeartbeatService.HeartbeatKeyPrefix };
+
+ var filter = new KeyValueFilter
+ {
+ StartsWith = true,
+ Key = InstanceHeartbeatService.HeartbeatKeyPrefix
+ };
var heartbeats = await store.FindManyAsync(filter, default);
foreach (var heartbeat in heartbeats)
{
var lastHeartbeat = DateTimeOffset.Parse(heartbeat.SerializedValue).UtcDateTime;
- if (DateTime.UtcNow - lastHeartbeat <= _heartbeatSettings.InstanceDeactivatedPeriod)
+ if (_systemClock.UtcNow - lastHeartbeat <= _heartbeatOptions.HeartbeatTimeoutPeriod)
continue;
var instanceName = heartbeat.Key.Substring(InstanceHeartbeatService.HeartbeatKeyPrefix.Length);
- await notificationSender.SendAsync(new InstanceDeactivated(instanceName));
+ await notificationSender.SendAsync(new HeartbeatTimedOut(instanceName));
await store.DeleteAsync(heartbeat.Key, default);
}
diff --git a/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatService.cs b/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatService.cs
index b40265935..96246e762 100644
--- a/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatService.cs
+++ b/src/modules/Elsa.Hosting.Management/HostedServices/InstanceHeartbeatService.cs
@@ -1,5 +1,5 @@
+using Elsa.Hosting.Management.Contracts;
using Elsa.Hosting.Management.Options;
-using Elsa.Workflows.Contracts;
using Elsa.Workflows.Runtime.Contracts;
using Elsa.Workflows.Runtime.Entities;
using Microsoft.Extensions.DependencyInjection;
@@ -14,22 +14,23 @@ namespace Elsa.Hosting.Management.HostedServices;
public class InstanceHeartbeatService : IHostedService, IDisposable
{
private readonly IServiceProvider _serviceProvider;
- private readonly HeartbeatSettings _heartbeatSettings;
+ private readonly HeartbeatOptions _heartbeatOptions;
private Timer? _timer;
internal static string HeartbeatKeyPrefix = "Heartbeat_";
+
///
/// Creates a new instance of the
///
- public InstanceHeartbeatService(IServiceProvider serviceProvider, IOptions heartbeatSettings)
+ public InstanceHeartbeatService(IServiceProvider serviceProvider, IOptions heartbeatOptions)
{
_serviceProvider = serviceProvider;
- _heartbeatSettings = heartbeatSettings.Value;
+ _heartbeatOptions = heartbeatOptions.Value;
}
-
+
public Task StartAsync(CancellationToken cancellationToken)
{
- _timer = new Timer(WriteHeartbeat, null, TimeSpan.Zero, _heartbeatSettings.InstanceHeartbeatRhythm);
+ _timer = new Timer(WriteHeartbeat, null, TimeSpan.Zero, _heartbeatOptions.InstanceHeartbeatRhythm);
return Task.CompletedTask;
}
@@ -48,17 +49,17 @@ public class InstanceHeartbeatService : IHostedService, IDisposable
{
_ = Task.Run(async () => await WriteHeartbeatAsync());
}
-
+
private async Task WriteHeartbeatAsync()
{
using var scope = _serviceProvider.CreateScope();
-
- var instanceNameRetriever = scope.ServiceProvider.GetRequiredService();
+
+ var instanceNameProvider = scope.ServiceProvider.GetRequiredService();
var store = scope.ServiceProvider.GetRequiredService();
-
+
await store.SaveAsync(new SerializedKeyValuePair
{
- Key = $"{HeartbeatKeyPrefix}{instanceNameRetriever.GetName()}",
+ Key = $"{HeartbeatKeyPrefix}{instanceNameProvider.GetName()}",
SerializedValue = DateTime.UtcNow.ToString("o")
},
default);
diff --git a/src/modules/Elsa.Hosting.Management/Notifications/InstanceDeactivated.cs b/src/modules/Elsa.Hosting.Management/Notifications/HeartbeatTimedOut.cs
similarity index 53%
rename from src/modules/Elsa.Hosting.Management/Notifications/InstanceDeactivated.cs
rename to src/modules/Elsa.Hosting.Management/Notifications/HeartbeatTimedOut.cs
index 3eb9f1e8a..40739cb02 100644
--- a/src/modules/Elsa.Hosting.Management/Notifications/InstanceDeactivated.cs
+++ b/src/modules/Elsa.Hosting.Management/Notifications/HeartbeatTimedOut.cs
@@ -2,4 +2,4 @@ using Elsa.Mediator.Contracts;
namespace Elsa.Hosting.Management.Notifications;
-public record InstanceDeactivated(string InstanceName) : INotification;
+public record HeartbeatTimedOut(string InstanceName) : INotification;
diff --git a/src/modules/Elsa.Hosting.Management/Options/HeartbeatSettings.cs b/src/modules/Elsa.Hosting.Management/Options/HeartbeatOptions.cs
similarity index 53%
rename from src/modules/Elsa.Hosting.Management/Options/HeartbeatSettings.cs
rename to src/modules/Elsa.Hosting.Management/Options/HeartbeatOptions.cs
index 71ab99614..66dc1ab14 100644
--- a/src/modules/Elsa.Hosting.Management/Options/HeartbeatSettings.cs
+++ b/src/modules/Elsa.Hosting.Management/Options/HeartbeatOptions.cs
@@ -1,7 +1,7 @@
namespace Elsa.Hosting.Management.Options;
-public class HeartbeatSettings
+public class HeartbeatOptions
{
public TimeSpan InstanceHeartbeatRhythm { get; set; } = TimeSpan.FromMinutes(1);
- public TimeSpan InstanceDeactivatedPeriod { get; set; } = TimeSpan.FromHours(1);
+ public TimeSpan HeartbeatTimeoutPeriod { get; set; } = TimeSpan.FromHours(1);
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Hosting.Management/Services/RandomApplicationInstanceNameProvider.cs b/src/modules/Elsa.Hosting.Management/Services/RandomApplicationInstanceNameProvider.cs
new file mode 100644
index 000000000..c9f5fbddc
--- /dev/null
+++ b/src/modules/Elsa.Hosting.Management/Services/RandomApplicationInstanceNameProvider.cs
@@ -0,0 +1,20 @@
+using Elsa.Hosting.Management.Contracts;
+using Elsa.Workflows.Services;
+
+namespace Elsa.Hosting.Management.Services;
+
+///
+/// Returns a randomly generated instance name.
+///
+public class RandomApplicationInstanceNameProvider : IApplicationInstanceNameProvider
+{
+ private readonly string _instanceName;
+
+ public RandomApplicationInstanceNameProvider(RandomLongIdentityGenerator identityGenerator)
+ {
+ _instanceName = identityGenerator.GenerateId();
+ }
+
+ ///
+ public string GetName() => _instanceName;
+}
\ No newline at end of file
diff --git a/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs b/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs
index e8a79844d..c405b86c2 100644
--- a/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs
+++ b/src/modules/Elsa.MassTransit.AzureServiceBus/Features/AzureServiceBusFeature.cs
@@ -3,6 +3,7 @@ using Elsa.Extensions;
using Elsa.Features.Abstractions;
using Elsa.Features.Attributes;
using Elsa.Features.Services;
+using Elsa.Hosting.Management.Contracts;
using Elsa.MassTransit.AzureServiceBus.Handlers;
using Elsa.MassTransit.AzureServiceBus.Models;
using Elsa.MassTransit.AzureServiceBus.Options;
@@ -10,7 +11,6 @@ using Elsa.MassTransit.AzureServiceBus.Services;
using Elsa.MassTransit.Features;
using Elsa.MassTransit.Models;
using Elsa.MassTransit.Options;
-using Elsa.Workflows.Contracts;
using MassTransit;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@@ -54,29 +54,29 @@ public class AzureServiceBusFeature : FeatureBase
massTransitFeature.BusConfigurator = configure =>
{
var consumers = massTransitFeature.GetConsumers().ToList();
- var shortLivedConsumers = consumers
- .Where(c => c.IsShortLived)
+ var temporaryConsumers = consumers
+ .Where(c => c.IsTemporary)
.ToList();
RegisterConsumers(consumers);
configure.AddServiceBusMessageScheduler();
- configure.AddConsumers(shortLivedConsumers.Select(c => c.ConsumerType).ToArray());
+ configure.AddConsumers(temporaryConsumers.Select(c => c.ConsumerType).ToArray());
configure.UsingAzureServiceBus((context, serviceBus) =>
{
var options = context.GetRequiredService>().Value;
- var instanceNameRetriever = context.GetRequiredService();
+ var instanceNameProvider = context.GetRequiredService();
if (ConnectionString != null)
serviceBus.Host(ConnectionString);
serviceBus.UseServiceBusMessageScheduler();
ConfigureServiceBus?.Invoke(serviceBus);
- foreach (var consumer in shortLivedConsumers)
+ foreach (var consumer in temporaryConsumers)
{
- serviceBus.ReceiveEndpoint($"Elsa-{instanceNameRetriever.GetName()}-{consumer.Name}", configurator =>
+ serviceBus.ReceiveEndpoint($"Elsa-{instanceNameProvider.GetName()}-{consumer.Name}", configurator =>
{
- configurator.AutoDeleteOnIdle = options.ShortTermQueueLifetime ?? TimeSpan.FromHours(1);
+ configurator.AutoDeleteOnIdle = options.TemporaryQueueTtl ?? TimeSpan.FromHours(1);
configurator.ConcurrentMessageLimit = options.ConcurrentMessageLimit;
configurator.ConfigureConsumer(context, consumer.ConsumerType);
});
@@ -109,7 +109,7 @@ public class AzureServiceBusFeature : FeatureBase
subscriptionTopology.Add(new MessageSubscriptionTopology(topicName,
consumer.Name ?? genericType.Name.ToLower(),
- consumer.IsShortLived));
+ consumer.IsTemporary));
}
}
diff --git a/src/modules/Elsa.MassTransit.AzureServiceBus/Handlers/OrphanedSubscriptionRemover.cs b/src/modules/Elsa.MassTransit.AzureServiceBus/Handlers/OrphanedSubscriptionRemover.cs
index 34d80d2a3..f03e5ede3 100644
--- a/src/modules/Elsa.MassTransit.AzureServiceBus/Handlers/OrphanedSubscriptionRemover.cs
+++ b/src/modules/Elsa.MassTransit.AzureServiceBus/Handlers/OrphanedSubscriptionRemover.cs
@@ -11,14 +11,14 @@ namespace Elsa.MassTransit.AzureServiceBus.Handlers;
public class OrphanedSubscriptionRemover(
MessageTopologyProvider topologyProvider,
ServiceBusAdministrationClient client)
- : INotificationHandler
+ : INotificationHandler
{
///
/// Removes orphaned subscriptions from Azure Service Bus.
///
- public async Task HandleAsync(InstanceDeactivated notification, CancellationToken cancellationToken)
+ public async Task HandleAsync(HeartbeatTimedOut notification, CancellationToken cancellationToken)
{
- var subscriptionTopology = topologyProvider.GetShortLivedSubscriptions().ToList();
+ var subscriptionTopology = topologyProvider.GetTemporarySubscriptions().ToList();
foreach (var subscription in subscriptionTopology)
{
diff --git a/src/modules/Elsa.MassTransit.AzureServiceBus/Models/MessageSubscriptionTopology.cs b/src/modules/Elsa.MassTransit.AzureServiceBus/Models/MessageSubscriptionTopology.cs
index e0399a48b..394adc176 100644
--- a/src/modules/Elsa.MassTransit.AzureServiceBus/Models/MessageSubscriptionTopology.cs
+++ b/src/modules/Elsa.MassTransit.AzureServiceBus/Models/MessageSubscriptionTopology.cs
@@ -3,4 +3,4 @@ namespace Elsa.MassTransit.AzureServiceBus.Models;
///
/// Represents the topology of a message subscription in Azure Service Bus.
///
-public record MessageSubscriptionTopology(string TopicName, string SubscriptionName, bool IsShortLived);
\ No newline at end of file
+public record MessageSubscriptionTopology(string TopicName, string SubscriptionName, bool IsTemporary);
\ No newline at end of file
diff --git a/src/modules/Elsa.MassTransit.AzureServiceBus/Services/MessageTopologyProvider.cs b/src/modules/Elsa.MassTransit.AzureServiceBus/Services/MessageTopologyProvider.cs
index 34276ae20..caeede53b 100644
--- a/src/modules/Elsa.MassTransit.AzureServiceBus/Services/MessageTopologyProvider.cs
+++ b/src/modules/Elsa.MassTransit.AzureServiceBus/Services/MessageTopologyProvider.cs
@@ -18,10 +18,10 @@ public class MessageTopologyProvider
}
///
- /// Retrieves all the short-lived message subscriptions from the subscription topology.
+ /// Retrieves all the temporary message subscriptions from the subscription topology.
///
- public IEnumerable GetShortLivedSubscriptions()
+ public IEnumerable GetTemporarySubscriptions()
{
- return _subscriptionTopology.Where(x => x.IsShortLived);
+ return _subscriptionTopology.Where(x => x.IsTemporary);
}
}
\ No newline at end of file
diff --git a/src/modules/Elsa.MassTransit.RabbitMq/Elsa.MassTransit.RabbitMq.csproj b/src/modules/Elsa.MassTransit.RabbitMq/Elsa.MassTransit.RabbitMq.csproj
index b191e06d3..82400f02a 100644
--- a/src/modules/Elsa.MassTransit.RabbitMq/Elsa.MassTransit.RabbitMq.csproj
+++ b/src/modules/Elsa.MassTransit.RabbitMq/Elsa.MassTransit.RabbitMq.csproj
@@ -8,6 +8,7 @@
+
diff --git a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs
index 2200c1121..3e7456d5b 100644
--- a/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs
+++ b/src/modules/Elsa.MassTransit.RabbitMq/Features/RabbitMqServiceBusFeature.cs
@@ -2,10 +2,10 @@ using Elsa.Extensions;
using Elsa.Features.Abstractions;
using Elsa.Features.Attributes;
using Elsa.Features.Services;
+using Elsa.Hosting.Management.Contracts;
using Elsa.MassTransit.Consumers;
using Elsa.MassTransit.Features;
using Elsa.MassTransit.Options;
-using Elsa.Workflows.Contracts;
using MassTransit;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -28,7 +28,7 @@ public class RabbitMqServiceBusFeature : FeatureBase
/// Configures the RabbitMQ transport options.
public Action? TransportOptions { get; set; }
-
+
///
/// Configures the RabbitMQ bus.
///
@@ -42,26 +42,26 @@ public class RabbitMqServiceBusFeature : FeatureBase
massTransitFeature.BusConfigurator = configure =>
{
var tempConsumers = massTransitFeature.GetConsumers()
- .Where(c => c.IsShortLived)
+ .Where(c => c.IsTemporary)
.ToList();
-
+
configure.AddConsumers(tempConsumers.Select(c => c.ConsumerType).ToArray());
-
+
configure.UsingRabbitMq((context, serviceBus) =>
{
var options = context.GetRequiredService>().Value;
- var instanceNameRetriever = context.GetRequiredService();
-
+ var instanceNameProvider = context.GetRequiredService();
+
if (!string.IsNullOrEmpty(ConnectionString))
serviceBus.Host(ConnectionString);
ConfigureServiceBus?.Invoke(serviceBus);
-
+
foreach (var consumer in tempConsumers)
{
- serviceBus.ReceiveEndpoint($"{instanceNameRetriever.GetName()}-{consumer.Name}", configurator =>
+ serviceBus.ReceiveEndpoint($"{instanceNameProvider.GetName()}-{consumer.Name}", configurator =>
{
- configurator.QueueExpiration = options.ShortTermQueueLifetime ?? TimeSpan.FromHours(1);
+ configurator.QueueExpiration = options.TemporaryQueueTtl ?? TimeSpan.FromHours(1);
configurator.ConcurrentMessageLimit = options.ConcurrentMessageLimit;
configurator.ConfigureConsumer(context);
});
diff --git a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs
index 191bb5798..dd58c3bd5 100644
--- a/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs
+++ b/src/modules/Elsa.MassTransit/Features/MassTransitFeature.cs
@@ -94,7 +94,7 @@ public class MassTransitFeature : FeatureBase
// Concatenate the manually registered consumers with the workflow message consumers.
var consumerTypeDefinitions = this.GetConsumers()
//Temporary queues require implementation specific variables which will be handled in their respective projects
- .Where(c => c.IsShortLived == false)
+ .Where(c => c.IsTemporary == false)
.Concat(workflowMessageConsumers).ToArray();
Services.AddMassTransit(bus =>
diff --git a/src/modules/Elsa.MassTransit/Models/ConsumerTypeDefinition.cs b/src/modules/Elsa.MassTransit/Models/ConsumerTypeDefinition.cs
index f602f7123..28ba0b701 100644
--- a/src/modules/Elsa.MassTransit/Models/ConsumerTypeDefinition.cs
+++ b/src/modules/Elsa.MassTransit/Models/ConsumerTypeDefinition.cs
@@ -7,4 +7,4 @@ public record ConsumerTypeDefinition(
Type ConsumerType,
Type? ConsumerDefinitionType = default,
string? Name = null,
- bool IsShortLived = false);
\ No newline at end of file
+ bool IsTemporary = false);
\ No newline at end of file
diff --git a/src/modules/Elsa.MassTransit/Options/MassTransitWorkflowDispatcherOptions.cs b/src/modules/Elsa.MassTransit/Options/MassTransitWorkflowDispatcherOptions.cs
index 6f01c967e..a872a853c 100644
--- a/src/modules/Elsa.MassTransit/Options/MassTransitWorkflowDispatcherOptions.cs
+++ b/src/modules/Elsa.MassTransit/Options/MassTransitWorkflowDispatcherOptions.cs
@@ -5,8 +5,8 @@ namespace Elsa.MassTransit.Options;
/// Provides options to the
public class MassTransitWorkflowDispatcherOptions
{
- /// The TTL of queues that are seen as short lived (typically queues that are created per running instance).
- public TimeSpan? ShortTermQueueLifetime { get; set; }
+ /// The TTL of queues that are seen as temporary (typically queues that are created per running instance).
+ public TimeSpan? TemporaryQueueTtl { get; set; }
/// The number of concurrent messages to process.
public int? ConcurrentMessageLimit { get; set; }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Contracts/IInstanceNameRetriever.cs b/src/modules/Elsa.Workflows.Core/Contracts/IInstanceNameRetriever.cs
deleted file mode 100644
index a75411068..000000000
--- a/src/modules/Elsa.Workflows.Core/Contracts/IInstanceNameRetriever.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Elsa.Workflows.Contracts;
-
-///
-/// Retrieves a name of the current instance.
-///
-public interface IInstanceNameRetriever
-{
- ///
- /// Returns a name for the instance.
- ///
- public string GetName();
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Core/Services/RandomInstanceNameRetriever.cs b/src/modules/Elsa.Workflows.Core/Services/RandomInstanceNameRetriever.cs
deleted file mode 100644
index 493cf5b52..000000000
--- a/src/modules/Elsa.Workflows.Core/Services/RandomInstanceNameRetriever.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Elsa.Workflows.Contracts;
-
-namespace Elsa.Workflows.Services;
-
-///
-/// Returns a randomly generated instance name.
-///
-public class RandomInstanceNameRetriever : IInstanceNameRetriever
-{
- private readonly string _instanceName;
-
- public RandomInstanceNameRetriever(RandomLongIdentityGenerator identityGenerator)
- {
- _instanceName = identityGenerator.GenerateId();
- }
-
- ///
- public string GetName() => _instanceName;
-}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs b/src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs
index 89183206f..961f7cb9e 100644
--- a/src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs
+++ b/src/modules/Elsa.Workflows.Runtime/Features/WorkflowRuntimeFeature.cs
@@ -104,10 +104,6 @@ public class WorkflowRuntimeFeature : FeatureBase
///
public Func BackgroundActivityScheduler { get; set; } = sp => ActivatorUtilities.CreateInstance(sp);
- ///
- /// A factory that instantiates an .
- ///
- public Func InstanceNameRetriever { get; set; } = sp => ActivatorUtilities.CreateInstance(sp);
///
/// A delegate to configure the .
@@ -183,7 +179,6 @@ public class WorkflowRuntimeFeature : FeatureBase
.AddScoped(WorkflowExecutionContextStore)
.AddSingleton(RunTaskDispatcher)
.AddSingleton(BackgroundActivityScheduler)
- .AddSingleton(InstanceNameRetriever)
.AddSingleton()
.AddScoped()
.AddScoped()