public async Task PublishAsync(object message, Func <OutboxPublishContext, Task> inlineFilter, CancellationToken cancellationToken = default) { var context = await publishFilterRunner.RunFiltersAsync(message, cancellationToken); if (!context.Canceled) { await inlineFilter(context); var entity = OutboxEntry.FromPublishContext(context); outboxDbContext.OutboxEntries.Add(entity); } }
/// <summary> /// Produce the <see cref="OutboxEntry"/> on Kafka using the data contained /// </summary> /// <param name="entry">The outbox message</param> public async Task Produce(OutboxEntry entry) { await _kafkaProducer.InternalProduce(entry.Topic, entry.Key, entry.Payload); }