Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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
     });
 }
Ejemplo n.º 3
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);
        }