Fix (recoverability bug): - TransferFilesToBucketActivity returned Completed() with no log, so its compensation could never delete the transferred files (orphaned objects on fault). IStorageService.TransferFilesAsync now returns the real uploaded keys; the activity logs them so Compensate can remove them. Also drops the Path.Combine key recomputation (produced backslash keys on Windows). Consistency / DRY: - Normalize all courier activities to internal + folder-based namespaces (several were public and in the flat .Activities namespace) - Extract the duplicated exponential retry into UseStandardRetry - Unify endpoint-name logic into a single EndpointHelper (remove the parallel MassTransitEndpointNames helper) Build: 0 warnings, 0 errors. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
16 lines
672 B
C#
16 lines
672 B
C#
namespace Musify.Infrastructure.MassTransit.Consumers
|
|
{
|
|
internal static class EndpointHelper
|
|
{
|
|
internal static string ExecuteQueueName(string endpointName) => $"{endpointName}_execute";
|
|
|
|
internal static string CompensateQueueName(string endpointName) => $"{endpointName}_compensate";
|
|
|
|
internal static Uri BuildExecuteActivityUri(string endpointName) => new($"queue:{ExecuteQueueName(endpointName)}");
|
|
|
|
internal static Uri BuildCompensateActivityUri(string endpointName) => new($"queue:{CompensateQueueName(endpointName)}");
|
|
|
|
internal static Uri BuildConsumerUri(string endpointName) => new($"queue:{endpointName}");
|
|
}
|
|
}
|