Exemplo n.º 1
0
    async Task DehydrateTransportMessage(OutgoingStepContext context, TransportMessage transportMessage)
    {
        var messageId = transportMessage.GetMessageId();

        try
        {
            using (var source = new MemoryStream(transportMessage.Body))
            {
                var attachment = await _dataBus.CreateAttachment(source);

                var headers = transportMessage.Headers.Clone();

                headers[Headers.MessagePayloadAttachmentId] = attachment.Id;

                context.Save(new TransportMessage(headers, EmptyMessageBody));
            }
        }
        catch (Exception exception)
        {
            throw new RebusApplicationException(exception,
                                                $"Could not create (automatic claim check) attachment for outgoing message with ID {messageId}");
        }
    }
Exemplo n.º 2
0
        public Task ProcessAsync(StepContext context, Func <Task> next, IValidator validator, ValidationResult validationResult)
        {
            OriginalTransportMessage originalTransportMessage = context.Load <OriginalTransportMessage>();
            TransportMessage         transportMessage         = originalTransportMessage.TransportMessage;
            ITransactionContext      transactionContext       = context.Load <ITransactionContext>();

            _logger.Debug(string.Format(CultureInfo.CurrentCulture, Resources.ValidationFailed_MovingToErrorQueue, "{MessageType}", "{MessageId}"), transportMessage.GetMessageType(), transportMessage.GetMessageId());

            var ex = new ValidationException(validationResult.Errors);

            return(_errorHandler.HandlePoisonMessage(transportMessage, transactionContext, ex));
        }