using Azure.Messaging.ServiceBus.Administration; using Elsa.Features.Abstractions; using Elsa.Features.Attributes; using Elsa.Features.Services; using Elsa.MassTransit.Features; using Elsa.MassTransit.Messages; using Elsa.MassTransit.Options; using Elsa.Workflows.Runtime.Activities; using MassTransit; using MassTransit.Configuration; namespace Elsa.MassTransit.AzureServiceBus.Features; /// /// Configures MassTransit to use the Azure Service Bus transport. /// [DependsOn(typeof(MassTransitFeature))] public class AzureServiceBusFeature : FeatureBase { /// public AzureServiceBusFeature(IModule module) : base(module) { } /// /// An Azure Service Bus connection string. /// public string? ConnectionString { get; set; } /// public override void Configure() { Module.Configure(massTransitFeature => { massTransitFeature.BusConfigurator = configure => { configure.AddServiceBusMessageScheduler(); configure.UsingAzureServiceBus((context, serviceBus) => { if (ConnectionString != null) serviceBus.Host(ConnectionString); serviceBus.UseServiceBusMessageScheduler(); serviceBus.ConfigureEndpoints(context, new KebabCaseEndpointNameFormatter("Elsa", false)); }); }; }); } }