Deduplicate MassTransit routing slips, activities and consumers
This commit is contained in:
+35
-40
@@ -11,6 +11,7 @@ using Musify.Infrastructure.MassTransit.Arguments;
|
||||
using Musify.Infrastructure.MassTransit.Consumers;
|
||||
using Musify.Infrastructure.MassTransit.Logs;
|
||||
using Musify.Infrastructure.MassTransit.RoutingSlip.Builders;
|
||||
using Musify.Infrastructure.MassTransit.Activities.LifeCycle;
|
||||
|
||||
namespace Musify.Infrastructure.MassTransit;
|
||||
|
||||
@@ -19,61 +20,55 @@ public static partial class MassTransitDependencyInjection
|
||||
private static void RegisterRoutingSlipBuilders(IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<AudioWorkflowRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureWorkflowRoutingSlipBuilder>();
|
||||
services.AddScoped<DeleteTrackRoutingSlipBuilder>();
|
||||
services.AddScoped<DeletePlayListRoutingSlipBuilder>();
|
||||
services.AddScoped<DeleteAlbumRoutingSlipBuilder>();
|
||||
services.AddScoped<CreateTrackRoutingSlipBuilder>();
|
||||
services.AddScoped<PlayListPictureSourceRoutingSlipBuilder>();
|
||||
services.AddScoped<AlbumPictureSourceRoutingSlipBuilder>();
|
||||
services.AddScoped<DeleteRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureSourceRoutingSlipBuilder>();
|
||||
services.AddScoped<PictureWorkflowRoutingSlipBuilder>();
|
||||
}
|
||||
|
||||
private static void RegisterConsumersAndActivities(IBusRegistrationConfigurator options)
|
||||
{
|
||||
options.AddConsumer<UpdatePlayListPictureConsumer>();
|
||||
options.AddConsumer<UpdateTrackPictureConsumer>();
|
||||
options.AddConsumer<RoutingSlipCleanUpConsumer>();
|
||||
options.AddConsumer<UpdateTrackAudioConsumer>();
|
||||
options.AddConsumer<DeleteTrackConsumer>();
|
||||
options.AddConsumer<DeletePlayListConsumer>();
|
||||
options.AddConsumer<DeleteAlbumConsumer>();
|
||||
options.AddConsumer<CreateTrackConsumer>();
|
||||
options.AddConsumer<CreatePlayListConsumer>();
|
||||
options.AddConsumer<UpdatePlayListPictureSourceConsumer>();
|
||||
options.AddConsumer<ProcessingSlipFaultConsumer>();
|
||||
options.AddConsumer<TrackProcessingFailedConsumer>();
|
||||
options.AddConsumer<PlayListProcessingFailedConsumer>();
|
||||
options.AddConsumer<CreateAlbumConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureSourceConsumer>();
|
||||
options.AddConsumer<UpdateAlbumPictureConsumer>();
|
||||
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<RemoveFileFromBucketActivity, RemoveFileFromBucketArguments>();
|
||||
options.AddExecuteActivity<DeleteAlbumActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeletePlayListActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<DeleteTrackActivity, DeleteEntityArguments>();
|
||||
options.AddExecuteActivity<GenerateAudioWorkflowPathsActivity, GenerateAudioWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<GeneratePictureWorkflowPathsActivity, GeneratePictureWorkflowPathsArguments>();
|
||||
options.AddExecuteActivity<MarkTrackAsRemovingActivity, MarkTrackAsRemovingArguments>();
|
||||
options.AddExecuteActivity<DeleteTrackFromDbActivity, DeleteTrackFromDbArguments>();
|
||||
options.AddExecuteActivity<MarkPlayListAsRemovingActivity, MarkPlayListAsRemovingArguments>();
|
||||
options.AddExecuteActivity<DeletePlayListFromDbActivity, DeletePlayListFromDbArguments>();
|
||||
options.AddExecuteActivity<PublishTrackProcessingEventsActivity, PublishTrackProcessingEventsArguments>();
|
||||
options.AddExecuteActivity<PublishPlayListPictureProcessingEventActivity, PublishPlayListPictureProcessingEventArguments>();
|
||||
options.AddExecuteActivity<MarkTrackAsFailedActivity, MarkTrackAsFailedArguments>();
|
||||
options.AddExecuteActivity<MarkPlayListAsFailedActivity, MarkPlayListAsFailedArguments>();
|
||||
options.AddExecuteActivity<MarkAlbumAsFailedActivity, MarkAlbumAsFailedArguments>();
|
||||
options.AddExecuteActivity<MarkAlbumAsRemovingActivity, MarkAlbumAsRemovingArguments>();
|
||||
options.AddExecuteActivity<DeleteAlbumFromDbActivity, DeleteAlbumFromDbArguments>();
|
||||
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<ResizePictureActivity, ResizePictureLocalArguments, ResizePictureLog>();
|
||||
options.AddActivity<UpdatePlayListPictureActivity, UpdatePlayListPictureArguments, UpdatePlayListPictureLog>();
|
||||
options.AddActivity<UpdateAlbumPictureActivity, UpdateAlbumPictureArguments, UpdateAlbumPictureLog>();
|
||||
options.AddActivity<UpdateTrackPictureActivity, UpdateTrackPictureArguments, UpdateTrackPictureLog>();
|
||||
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<CopyFileInBucketActivity, CopyFileInBucketArguments, CopyFileInBucketLog>();
|
||||
options.AddActivity<ConsumeUploadIntentsActivity, ConsumeUploadIntentsArguments, ConsumeUploadIntentsLog>();
|
||||
}
|
||||
}
|
||||
|
||||
+23
-34
@@ -18,14 +18,7 @@ public static partial class MassTransitDependencyInjection
|
||||
services.AddScoped<IEventBus, MassTransitEventBus>();
|
||||
services.AddMassTransit(options =>
|
||||
{
|
||||
options.AddEntityFrameworkOutbox<Database>(outbox =>
|
||||
{
|
||||
outbox.UsePostgres();
|
||||
outbox.UseBusOutbox();
|
||||
|
||||
outbox.QueryDelay = TimeSpan.FromSeconds(1);
|
||||
outbox.DuplicateDetectionWindow = TimeSpan.FromMinutes(30);
|
||||
});
|
||||
AddOutbox(options);
|
||||
|
||||
options.UsingRabbitMq((busRegistrationContext, busFactoryConfigurator) =>
|
||||
ConfigureRabbitMqHost(
|
||||
@@ -46,42 +39,20 @@ public static partial class MassTransitDependencyInjection
|
||||
|
||||
services.AddMassTransit(options =>
|
||||
{
|
||||
options.AddEntityFrameworkOutbox<Database>(outbox =>
|
||||
{
|
||||
outbox.UsePostgres();
|
||||
outbox.UseBusOutbox();
|
||||
|
||||
outbox.QueryDelay = TimeSpan.FromSeconds(1);
|
||||
outbox.DuplicateDetectionWindow = TimeSpan.FromMinutes(30);
|
||||
});
|
||||
AddOutbox(options);
|
||||
|
||||
options.SetKebabCaseEndpointNameFormatter();
|
||||
|
||||
RegisterConsumersAndActivities(options);
|
||||
|
||||
options.AddSagaStateMachine<TrackProcessingStateMachine, TrackProcessingState>()
|
||||
.EntityFrameworkRepository(repository =>
|
||||
{
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
});
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<TrackProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<PlayListProcessingStateMachine, PlayListProcessingState>()
|
||||
.EntityFrameworkRepository(repository =>
|
||||
{
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
});
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<PlayListProcessingState>);
|
||||
|
||||
options.AddSagaStateMachine<AlbumProcessingStateMachine, AlbumProcessingState>()
|
||||
.EntityFrameworkRepository(repository =>
|
||||
{
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
});
|
||||
.EntityFrameworkRepository(ConfigureSagaRepository<AlbumProcessingState>);
|
||||
|
||||
options.AddConfigureEndpointsCallback((registrationContext, _, endpointConfigurator) =>
|
||||
{
|
||||
@@ -102,6 +73,24 @@ public static partial class MassTransitDependencyInjection
|
||||
return services;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
repository.ConcurrencyMode = ConcurrencyMode.Pessimistic;
|
||||
repository.ExistingDbContext<Database>();
|
||||
repository.UsePostgres();
|
||||
}
|
||||
|
||||
private static void UseStandardRetry(IReceiveEndpointConfigurator endpointConfigurator) =>
|
||||
endpointConfigurator.UseMessageRetry(retryConfigurator =>
|
||||
retryConfigurator.Exponential(
|
||||
|
||||
Reference in New Issue
Block a user