Files
tiku-backend.net/Tiku.Infrastructure/Messaging/BackgroundJobDispatcher.cs

41 lines
1.1 KiB
C#

using MassTransit;
using Tiku.Application.Jobs;
using Tiku.Contracts;
namespace Tiku.Infrastructure.Messaging;
internal sealed class NullBackgroundJobDispatcher : IBackgroundJobDispatcher
{
public bool IsEnabled => false;
public Task DispatchAsync(
Guid jobId,
Guid tenantId,
string jobType,
string correlationId,
CancellationToken cancellationToken = default) => Task.CompletedTask;
}
internal sealed class MassTransitBackgroundJobDispatcher(IPublishEndpoint publishEndpoint) :
IBackgroundJobDispatcher
{
public bool IsEnabled => true;
public Task DispatchAsync(
Guid jobId,
Guid tenantId,
string jobType,
string correlationId,
CancellationToken cancellationToken = default) =>
publishEndpoint.Publish(
new BackgroundJobRequestedV1(
Guid.NewGuid(),
jobId,
tenantId,
jobType,
DateTimeOffset.UtcNow,
correlationId),
context => context.MessageId = jobId,
cancellationToken);
}