Beispiel #1
0
        public async Task <Guid> EnqueueAsync <T>(Guid correlationId, T message, CancellationToken cancellationToken) where T : IOutboxMessage
        {
            var assemblyQualifiedName = message.GetType().AssemblyQualifiedName;

            if (assemblyQualifiedName == null)
            {
                throw new InvalidOperationException("Can't resolve assemblyQualifiedName");
            }

            var outbox = new OutboxEnvelope(correlationId, assemblyQualifiedName, OutboxMessageStatus.New, _serializer.Serialize(message));
            await _outboxDataProvider.Add(outbox, cancellationToken).ConfigureAwait(false);

            return(correlationId);
        }