Change editor rule
This commit is contained in:
+53
-52
@@ -13,62 +13,63 @@ using Musify.Infrastructure.MassTransit.Consumers;
|
||||
using Musify.Infrastructure.MassTransit.Logs;
|
||||
using Musify.Infrastructure.MassTransit.RoutingSlip.Builders;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit;
|
||||
|
||||
public static partial class MassTransitDependencyInjection
|
||||
namespace Musify.Infrastructure.MassTransit
|
||||
{
|
||||
private static void RegisterRoutingSlipBuilders(IServiceCollection services)
|
||||
public static partial class MassTransitDependencyInjection
|
||||
{
|
||||
services.AddScoped<AudioWorkflowRoutingSlipBuilder>();
|
||||
services.AddScoped<CreateTrackRoutingSlipBuilder>();
|
||||
services.AddScoped<DeleteRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureSourceRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureWorkflowRoutingSlipBuilder>();
|
||||
}
|
||||
private static void RegisterRoutingSlipBuilders(IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<AudioWorkflowRoutingSlipBuilder>();
|
||||
services.AddScoped<CreateTrackRoutingSlipBuilder>();
|
||||
services.AddScoped<DeleteRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureSourceRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureWorkflowRoutingSlipBuilder>();
|
||||
}
|
||||
|
||||
private static void RegisterConsumersAndActivities(IBusRegistrationConfigurator options)
|
||||
{
|
||||
options.AddConsumer<AlbumProcessingFailedConsumer>();
|
||||
options.AddConsumer<CreateAlbumConsumer>();
|
||||
options.AddConsumer<CreatePlayListConsumer>();
|
||||
options.AddConsumer<CreateTrackConsumer>();
|
||||
options.AddConsumer<DeleteAlbumConsumer>();
|
||||
options.AddConsumer<DeletePlayListConsumer>();
|
||||
options.AddConsumer<DeleteTrackConsumer>();
|
||||
options.AddConsumer<PlayListProcessingFailedConsumer>();
|
||||
options.AddConsumer<ProcessingSlipFaultConsumer>();
|
||||
options.AddConsumer<RoutingSlipCleanUpConsumer>();
|
||||
options.AddConsumer<TrackProcessingFailedConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureSourceConsumer>();
|
||||
options.AddConsumer<UpdatePlayListPictureConsumer>();
|
||||
options.AddConsumer<UpdatePlayListPictureSourceConsumer>();
|
||||
options.AddConsumer<UpdateTrackAudioConsumer>();
|
||||
options.AddConsumer<UpdateTrackPictureConsumer>();
|
||||
private static void RegisterConsumersAndActivities(IBusRegistrationConfigurator options)
|
||||
{
|
||||
options.AddConsumer<AlbumProcessingFailedConsumer>();
|
||||
options.AddConsumer<CreateAlbumConsumer>();
|
||||
options.AddConsumer<CreatePlayListConsumer>();
|
||||
options.AddConsumer<CreateTrackConsumer>();
|
||||
options.AddConsumer<DeleteAlbumConsumer>();
|
||||
options.AddConsumer<DeletePlayListConsumer>();
|
||||
options.AddConsumer<DeleteTrackConsumer>();
|
||||
options.AddConsumer<PlayListProcessingFailedConsumer>();
|
||||
options.AddConsumer<ProcessingSlipFaultConsumer>();
|
||||
options.AddConsumer<RoutingSlipCleanUpConsumer>();
|
||||
options.AddConsumer<TrackProcessingFailedConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureSourceConsumer>();
|
||||
options.AddConsumer<UpdatePlayListPictureConsumer>();
|
||||
options.AddConsumer<UpdatePlayListPictureSourceConsumer>();
|
||||
options.AddConsumer<UpdateTrackAudioConsumer>();
|
||||
options.AddConsumer<UpdateTrackPictureConsumer>();
|
||||
|
||||
options.AddExecuteActivity<DeleteAlbumActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeletePlayListActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeleteTrackActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<GenerateAudioWorkflowPathsActivity, GenerateAudioWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<GeneratePictureWorkflowPathsActivity, GeneratePictureWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<MarkAlbumLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<MarkPlayListLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<MarkTrackLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<PublishAlbumPictureProcessingEventActivity, PublishAlbumPictureProcessingEventArguments>();
|
||||
options.AddExecuteActivity<PublishPlayListPictureProcessingEventActivity, PublishPlayListPictureProcessingEventArguments>();
|
||||
options.AddExecuteActivity<PublishTrackProcessingEventsActivity, PublishTrackProcessingEventsArguments>();
|
||||
options.AddExecuteActivity<RemoveFileFromBucketActivity, RemoveFileFromBucketArguments>();
|
||||
options.AddExecuteActivity<DeleteAlbumActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeletePlayListActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeleteTrackActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<GenerateAudioWorkflowPathsActivity, GenerateAudioWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<GeneratePictureWorkflowPathsActivity, GeneratePictureWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<MarkAlbumLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<MarkPlayListLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<MarkTrackLifeCycleActivity, MarkLifeCycleArguments>();
|
||||
options.AddExecuteActivity<PublishAlbumPictureProcessingEventActivity, PublishAlbumPictureProcessingEventArguments>();
|
||||
options.AddExecuteActivity<PublishPlayListPictureProcessingEventActivity, PublishPlayListPictureProcessingEventArguments>();
|
||||
options.AddExecuteActivity<PublishTrackProcessingEventsActivity, PublishTrackProcessingEventsArguments>();
|
||||
options.AddExecuteActivity<RemoveFileFromBucketActivity, RemoveFileFromBucketArguments>();
|
||||
|
||||
options.AddActivity<ConsumeUploadIntentsActivity, ConsumeUploadIntentsArguments, ConsumeUploadIntentsLog>();
|
||||
options.AddActivity<CopyFileInBucketActivity, CopyFileInBucketArguments, CopyFileInBucketLog>();
|
||||
options.AddActivity<DownloadFileFromBucketActivity, DownloadFileFromBucketArguments, DownloadFileFromBucketLog>();
|
||||
options.AddActivity<ResizePictureActivity, ResizePictureLocalArguments, ResizePictureLog>();
|
||||
options.AddActivity<TranscodeAudioActivity, TranscodeAudioArguments, TranscodeAudioLog>();
|
||||
options.AddActivity<TransferFilesToBucketActivity, TransferFilesToBucketArguments, TransferFilesToBucketLog>();
|
||||
options.AddActivity<UpdateAlbumPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UpdatePlayListPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UpdateTrackAudioActivity, UpdateTrackAudioArguments, UpdateTrackAudioLog>();
|
||||
options.AddActivity<UpdateTrackPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UploadFileToBucketActivity, UploadFileToBucketArguments, UploadFileToBucketLog>();
|
||||
options.AddActivity<ConsumeUploadIntentsActivity, ConsumeUploadIntentsArguments, ConsumeUploadIntentsLog>();
|
||||
options.AddActivity<CopyFileInBucketActivity, CopyFileInBucketArguments, CopyFileInBucketLog>();
|
||||
options.AddActivity<DownloadFileFromBucketActivity, DownloadFileFromBucketArguments, DownloadFileFromBucketLog>();
|
||||
options.AddActivity<ResizePictureActivity, ResizePictureLocalArguments, ResizePictureLog>();
|
||||
options.AddActivity<TranscodeAudioActivity, TranscodeAudioArguments, TranscodeAudioLog>();
|
||||
options.AddActivity<TransferFilesToBucketActivity, TransferFilesToBucketArguments, TransferFilesToBucketLog>();
|
||||
options.AddActivity<UpdateAlbumPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UpdatePlayListPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UpdateTrackAudioActivity, UpdateTrackAudioArguments, UpdateTrackAudioLog>();
|
||||
options.AddActivity<UpdateTrackPictureActivity, UpdatePicturesArguments, UpdatePicturesLog>();
|
||||
options.AddActivity<UploadFileToBucketActivity, UploadFileToBucketArguments, UploadFileToBucketLog>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+87
-86
@@ -7,107 +7,108 @@ using Musify.Infrastructure.Configuration;
|
||||
using Musify.Infrastructure.MassTransit.Sagas;
|
||||
using Musify.Infrastructure.Persistence;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit;
|
||||
|
||||
public static partial class MassTransitDependencyInjection
|
||||
namespace Musify.Infrastructure.MassTransit
|
||||
{
|
||||
public static IServiceCollection AddMassTransitClient(this IServiceCollection services, IConfiguration configuration)
|
||||
public static partial class MassTransitDependencyInjection
|
||||
{
|
||||
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
|
||||
services.AddScoped<IEventBus, MassTransitEventBus>();
|
||||
|
||||
services.AddMassTransit(options =>
|
||||
public static IServiceCollection AddMassTransitClient(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
AddOutbox(options);
|
||||
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
|
||||
services.AddScoped<IEventBus, MassTransitEventBus>();
|
||||
|
||||
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
|
||||
ConfigureRabbitMqHost(
|
||||
busFactoryConfigurator,
|
||||
busRegistrationContext.GetRequiredService<MassTransitConfiguration>()));
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddMassTransitConsumers(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
|
||||
|
||||
services.AddValidatedOptions<WorkerConfiguration>(configuration);
|
||||
services.AddScoped<IEventBus, MassTransitEventBus>();
|
||||
|
||||
RegisterRoutingSlipBuilders(services);
|
||||
|
||||
services.AddMassTransit(options =>
|
||||
{
|
||||
AddOutbox(options);
|
||||
|
||||
options.SetKebabCaseEndpointNameFormatter();
|
||||
|
||||
RegisterConsumersAndActivities(options);
|
||||
|
||||
options.AddSagaStateMachine<TrackProcessingStateMachine, TrackProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<TrackProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<PlayListProcessingStateMachine, PlayListProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<PlayListProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<AlbumProcessingStateMachine, AlbumProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<AlbumProcessingState>);
|
||||
|
||||
options.AddConfigureEndpointsCallback((registrationContext, _, endpointConfigurator) =>
|
||||
services.AddMassTransit(options =>
|
||||
{
|
||||
UseStandardRetry(endpointConfigurator);
|
||||
endpointConfigurator.UseEntityFrameworkOutbox<Database>(registrationContext);
|
||||
AddOutbox(options);
|
||||
|
||||
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
|
||||
ConfigureRabbitMqHost(
|
||||
busFactoryConfigurator,
|
||||
busRegistrationContext.GetRequiredService<MassTransitConfiguration>()));
|
||||
});
|
||||
|
||||
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
|
||||
return services;
|
||||
}
|
||||
|
||||
public static IServiceCollection AddMassTransitConsumers(this IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
services.AddValidatedOptions<MassTransitConfiguration>(configuration);
|
||||
|
||||
services.AddValidatedOptions<WorkerConfiguration>(configuration);
|
||||
services.AddScoped<IEventBus, MassTransitEventBus>();
|
||||
|
||||
RegisterRoutingSlipBuilders(services);
|
||||
|
||||
services.AddMassTransit(options =>
|
||||
{
|
||||
ConfigureRabbitMqHost(
|
||||
busFactoryConfigurator,
|
||||
busRegistrationContext.GetRequiredService<MassTransitConfiguration>());
|
||||
AddOutbox(options);
|
||||
|
||||
busFactoryConfigurator.ConfigureEndpoints(busRegistrationContext);
|
||||
options.SetKebabCaseEndpointNameFormatter();
|
||||
|
||||
RegisterConsumersAndActivities(options);
|
||||
|
||||
options.AddSagaStateMachine<TrackProcessingStateMachine, TrackProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<TrackProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<PlayListProcessingStateMachine, PlayListProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<PlayListProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<AlbumProcessingStateMachine, AlbumProcessingState>()
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<AlbumProcessingState>);
|
||||
|
||||
options.AddConfigureEndpointsCallback((registrationContext, _, endpointConfigurator) =>
|
||||
{
|
||||
UseStandardRetry(endpointConfigurator);
|
||||
endpointConfigurator.UseEntityFrameworkOutbox<Database>(registrationContext);
|
||||
});
|
||||
|
||||
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
|
||||
{
|
||||
ConfigureRabbitMqHost(
|
||||
busFactoryConfigurator,
|
||||
busRegistrationContext.GetRequiredService<MassTransitConfiguration>());
|
||||
|
||||
busFactoryConfigurator.ConfigureEndpoints(busRegistrationContext);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return services;
|
||||
}
|
||||
return services;
|
||||
}
|
||||
|
||||
private static void AddOutbox(IBusRegistrationConfigurator options) =>
|
||||
options.AddEntityFrameworkOutbox<Database>(outbox =>
|
||||
private static void AddOutbox(IBusRegistrationConfigurator options) =>
|
||||
options.AddEntityFrameworkOutbox<Database>(outbox =>
|
||||
{
|
||||
outbox.UsePostgres();
|
||||
outbox.UseBusOutbox();
|
||||
|
||||
outbox.QueryDelay = TimeSpan.FromSeconds(1);
|
||||
outbox.DuplicateDetectionWindow = TimeSpan.FromMinutes(30);
|
||||
});
|
||||
|
||||
private static void ConfigureSagaRepository<TSaga>(IEntityFrameworkSagaRepositoryConfigurator<TSaga> repository)
|
||||
where TSaga : class, ISaga
|
||||
{
|
||||
outbox.UsePostgres();
|
||||
outbox.UseBusOutbox();
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
}
|
||||
|
||||
outbox.QueryDelay = TimeSpan.FromSeconds(1);
|
||||
outbox.DuplicateDetectionWindow = TimeSpan.FromMinutes(30);
|
||||
});
|
||||
private static void UseStandardRetry(IReceiveEndpointConfigurator endpointConfigurator) =>
|
||||
endpointConfigurator.UseMessageRetry(retryConfigurator =>
|
||||
retryConfigurator.Exponential(
|
||||
retryLimit: 5,
|
||||
minInterval: TimeSpan.FromSeconds(1),
|
||||
maxInterval: TimeSpan.FromSeconds(30),
|
||||
intervalDelta: TimeSpan.FromSeconds(2)));
|
||||
|
||||
private static void ConfigureSagaRepository<TSaga>(IEntityFrameworkSagaRepositoryConfigurator<TSaga> repository)
|
||||
where TSaga : class, ISaga
|
||||
{
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
}
|
||||
|
||||
private static void UseStandardRetry(IReceiveEndpointConfigurator endpointConfigurator) =>
|
||||
endpointConfigurator.UseMessageRetry(retryConfigurator =>
|
||||
retryConfigurator.Exponential(
|
||||
retryLimit: 5,
|
||||
minInterval: TimeSpan.FromSeconds(1),
|
||||
maxInterval: TimeSpan.FromSeconds(30),
|
||||
intervalDelta: TimeSpan.FromSeconds(2)));
|
||||
|
||||
private static void ConfigureRabbitMqHost(
|
||||
IRabbitMqBusFactoryConfigurator busFactoryConfigurator,
|
||||
MassTransitConfiguration massTransitConfiguration)
|
||||
{
|
||||
busFactoryConfigurator.Host(massTransitConfiguration.Address, options =>
|
||||
private static void ConfigureRabbitMqHost(
|
||||
IRabbitMqBusFactoryConfigurator busFactoryConfigurator,
|
||||
MassTransitConfiguration massTransitConfiguration)
|
||||
{
|
||||
options.Username(massTransitConfiguration.Username);
|
||||
options.Password(massTransitConfiguration.Password);
|
||||
});
|
||||
busFactoryConfigurator.Host(massTransitConfiguration.Address, options =>
|
||||
{
|
||||
options.Username(massTransitConfiguration.Username);
|
||||
options.Password(massTransitConfiguration.Password);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user