public Task ExecuteAsync(OutboxPublishContext context, CancellationToken cancellationToken = default) { var tenantId = identityService.TryGetTenantId(); if (tenantId != null) { context.Headers.Add(MessagingConstants.TenantId, tenantId.ToString()); } context.Headers.Add(MessagingConstants.UserId, identityService.GetCurrentUserId().ToString()); return(Task.CompletedTask); }
public static OutboxEntry FromPublishContext(OutboxPublishContext context) { return(new OutboxEntry { Id = Guid.NewGuid(), Headers = JsonSerializer.Serialize(context.Headers), Body = JsonSerializer.Serialize(context.Message, context.Message.GetType()), TypeName = context.Message.GetType().AssemblyQualifiedName, CreatedAt = DateTime.Now, State = OutboxEntryState.Pending, Retries = 0 }); }
public async Task <OutboxPublishContext> RunFiltersAsync(object message, CancellationToken cancellationToken = default) { var publishFilters = serviceProvider.GetServices <IPublishFilter>(); var context = new OutboxPublishContext(message); foreach (var filter in publishFilters) { if (context.Canceled) { break; } await filter.ExecuteAsync(context, cancellationToken); } return(context); }